Удаление многострочной функции

#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)