Объединение нескольких индикаторов с различными временными рамками в стратегии

#pine-script #indicator #tradingview-api

Вопрос:

Я здесь довольно недавно; очень хорошее и полезное место.

Я пытаюсь объединить несколько индикаторов в стратегии Tradingview с помощью скрипта Pine. Это встроенный код Супертренда:

 //@version=5
indicator("Supertrend", overlay=true, timeframe="", timeframe_gaps=true)

atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

bodyMiddle = plot((open   close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)

fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false)
 

Я хочу использовать Супертренд в 30-метровых временных рамках. Я не могу изменить значение timeframe="" , потому что это один индикатор. Я работаю над стратегией, и там все изменилось.

«В то время как» супертренд (30 м) находится в состоянии восходящего тренда, я хочу применить (купить/продать) встроенный индикатор MFI в 15-метровый период времени. Вот встроенный MFI:

 //@version=5
indicator(title="Money Flow Index", shorttitle="MFI", format=format.price, precision=2, timeframe="", timeframe_gaps=true)
length = input.int(title="Length", defval=14, minval=1, maxval=2000)
src = hlc3
mf = ta.mfi(src, length)
plot(mf, "MF", color=#7E57C2)
overbought=hline(80, title="Overbought", color=#787B86)
oversold=hline(20, title="Oversold", color=#787B86)
fill(overbought, oversold, color=color.rgb(126, 87, 194, 90), title="Background")
 

и когда тренд переходит в нисходящий тренд, я больше не хочу использовать MFI, но хочу использовать полосы Боллинджера в течение 1 часа», пока» супертренд (30 м) находится в состоянии нисходящего тренда. Вот встроенные полосы Боллинджера:

 //@version=5
indicator(shorttitle="BB", title="Bollinger Bands", overlay=true, timeframe="", timeframe_gaps=true)
length = input.int(20, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis   dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
 

Я думаю, что мне нужно использовать request.security() функцию для разных временных рамок в одной и той же стратегии и if amp; else для включения/выключения одного индикатора в условиях восходящего или нисходящего тренда Супертренда, но я действительно не понимаю, как его построить. Я ценю любые ответы и заранее благодарю

Комментарии:

1. Мое предложение-забыть о разных таймфреймах и попытаться написать все для одного и того же таймфрейма. Посмотрите, сможете ли вы это сделать. Если вы можете применить свой алгоритм к одному и тому же таймфрейму, вы можете использовать request.security() его для разных таймфреймов.