как исправить эту ошибку в скрипте стратегии - PullRequest
0 голосов
/ 29 января 2020

помогите мне исправить ошибку в скрипте стратегии "Сценарий не может быть переведен с: | B | a: = n . Ошибка, как мне кажется, происходит в последней строке первого индикатора. Мне кажется, что это строка интегратора. введите здесь описание ссылки Отдельно без стратегии, показатели компилируются без проблем.

strategy("Strategy long ", overlay=true)

//study("Trend Step")
length = input(50)
src = close
dev = stdev(src,length)*2
a = 0.
a := n < length ? src : src > nz(a[1],src) + dev ? src : src < nz(a[1],src) - dev ? src : a[1]

//study("Slowema")
slow_ema_period = input(20,"Slow EMA Period")
avg_price = input(hlc3)
smooth_length = input(5, minval=1)
fast_end = input(2.5,step=.5)
slow_end = input(20)
abs_noise = abs(avg_price - avg_price[1])
noise = sum(abs_noise, smooth_length)
signal = abs(avg_price - avg_price[smooth_length])
smooth = pow(iff(noise != 0, signal / noise, 0) * (2/(fast_end + 1) - 2/(slow_end + 1)) + 2/(slow_end + 1), 2) 
avg_ma = nz(avg_ma[1]) + smooth * (avg_price - nz(avg_ma[1]))
ha_symbol = heikinashi(tickerid)
ha_close = security(ha_symbol, period, avg_ma)
slow_ema = ema(ha_close,slow_ema_period)

plot(a,color=color.lime,linewidth=2,transp=0)
plot(slow_ema,color=yellow,linewidth=2,style=line)

//Strategy
longCondition =  crossover(a,slow_ema) 
closeCondition = crossunder(a,slow_ema)
strategy.entry("long",strategy.long,when = longCondition)
strategy.close("long",when = closeCondition)

1 Ответ

1 голос
/ 29 января 2020

Честно говоря, вы просто копируете случайные фрагменты кода, собираете их вместе и затем выкидываете результат сюда? Я вижу там три разные версии сосны в вашем сценарии. Конечно, после такого подхода вы получаете такие странные ошибки. Не могли бы вы немного почтить других людей и написать свой собственный код или хотя бы немного узнать о программировании Pine? Первой и главной проблемой является избыточный код a = 0.. Это должно быть просто a = n < length ... etc

Вторая проблема: color.lime должно быть lime

...