#pine-script #trading #indicator #tradingview-api #question-answering
#сценарий pine #торговля #индикатор #tradingview-api #nlp -вопрос-ответ
Вопрос:
Я пытаюсь внедрить один из пользовательских индикаторов «layzybear» в стратегию. Индикатор — это система Elder Impuls «EIS_lb», которую я закодировал до версии 4. Цель состоит в том, чтобы установить (зеленый фон = OK для покупки) и (красный фон = OK для продажи) и (синий фон = NOK для торговли). Но я просто не могу понять, как я могу де-сконструировать многострочную функцию, чтобы установить эти правила. Обычно я просто устанавливаю условия графика как правила покупки и продажи, но здесь это не сработает.
Я был бы очень благодарен за любую помощь или мысли.
useCustomResolution=input(true, type=input.bool)
customResolution=input("D", type=input.resolution)
source = security(syminfo.ticker, useCustomResolution ? customResolution : timeframe.period, close, barmerge.gaps_off, barmerge.lookahead_on)
lengthEMA = input(13)
fastLength = input(12, minval=1),
slowLength=input(26,minval=1)
signalLength=input(9,minval=1)
calc_hist(source, fastLength, slowLength) =>
fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)
macd = fastMA - slowMA
signal = sma(macd, signalLength)
macd - signal
get_color(emaSeries, macdHist) =>
g_f = (emaSeries > emaSeries[1]) and (macdHist > macdHist[1])
r_f = (emaSeries < emaSeries[1]) and (macdHist < macdHist[1])
g_f ? color.green : r_f ? color.red : color.blue
b_color = get_color(ema(source, lengthEMA), calc_hist(source, fastLength, slowLength))
bgcolor(b_color, transp=50)
Ответ №1:
Первое, на что следует обратить внимание — использование security
функции с lookahead_on
аргументом без оператора ссылки на историю []
приведет к «перерисовке» вашего скрипта. Я добавил ссылку на историю 1 к закрытому источнику и добавил вторую прокомментированную строку с перерисованным значением, если вы все еще хотите это использовать.
//@version=4
strategy("My Strategy", overlay=true)
useCustomResolution=input(true, type=input.bool)
customResolution=input("D", type=input.resolution)
source = security(syminfo.ticker, useCustomResolution ? customResolution : timeframe.period, close[1], barmerge.gaps_off, barmerge.lookahead_on)
// source = security(syminfo.ticker, useCustomResolution ? customResolution : timeframe.period, close, barmerge.gaps_off, barmerge.lookahead_on) // Repaint
lengthEMA = input(13)
fastLength = input(12, minval=1),
slowLength=input(26,minval=1)
signalLength=input(9,minval=1)
calc_hist(source, fastLength, slowLength) =>
fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)
macd = fastMA - slowMA
signal = sma(macd, signalLength)
macd - signal
// get_color(emaSeries, macdHist) =>
// g_f = (emaSeries > emaSeries[1]) and (macdHist > macdHist[1])
// r_f = (emaSeries < emaSeries[1]) and (macdHist < macdHist[1])
// g_f ? color.green : r_f ? color.red : color.blue
get_signal(emaSeries, macdHist) =>
g_f = (emaSeries > emaSeries[1]) and (macdHist > macdHist[1])
r_f = (emaSeries < emaSeries[1]) and (macdHist < macdHist[1])
g_f ? true : r_f ? false : na
signal = get_signal(ema(source, lengthEMA), calc_hist(source, fastLength, slowLength))
bgcolor(signal == true ? color.green : signal == false ? color.red : color.blue, transp=50)
if signal == true
strategy.entry("My Long Entry Id", strategy.long)
if signal == false
strategy.entry("My Short Entry Id", strategy.short)