Сигнал запускается только в том случае, если два последовательных перехода проходят в одном направлении. - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть простой сосновый скрипт, чтобы изменить цвет свечи, когда она пересекает линию киджун. Чего я хочу добиться, так это того, что триггер должен произойти, только если два пересечения находятся в одном направлении.

Попробовал, но не смог найти хорошее решение.

study(title="KijCrossTest", shorttitle="KijCrossTest", overlay = false )


conversionPeriods = input(9, minval=1),
basePeriods = input(26, minval=1)
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 
Periods"),
displacement = input(26, minval=1)
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
midtk = (conversionLine+baseLine)/2


long  = iff ( (close > baseLine)  and (low<=baseLine) and (close>open) 
,1, -1)

short = iff ( (close < baseLine)and (high>=baseLine) and (close<open) 
,-1, 1)



barcolor(long == 1 ? lime: short == -1 ? red:close < open? black : white)

plot(long, title="long", style=line, linewidth=1, color=green )
plot(short, title="short", style=line, linewidth=1, color=red )

image

1 Ответ

1 голос
/ 25 апреля 2019
//@version=3
study("My Script", overlay=true, max_bars_back=5000)

s1 = sma(close, 10)
s2 = sma(close, 200)

plot(s1, color=red)
plot(s2, color=green)

crossed = cross(s1, s2)

plot(crossed ? 100 : 0, color=green, style=histogram)

//NOTE: used crosseed[1], because barssince(crosseed) would return 0
since = barssince(crossed[1])

colorTheSame(s) => 
    close > open == close[s] > open[s]

triggered = crossed and colorTheSame(since)

plot(triggered ? 100 : 0)

Полагаю, это близко к тому, что вы ищете. Я использовал sma вместо вашей серии в качестве примера

...