pinescript - пересечение графика, когда EMA пересекает SMA, когда скользящая средняя выше / ниже 200 - PullRequest
0 голосов
/ 10 октября 2018

Я очень плохо знаком с Pinescript, и я застрял в этой точке ... Я хотел бы построить крест только тогда, когда 10 EMA пересекает 21 EMA, в то время как 21 выше 50 EMA и 50 EMA выше 200 EMA.Это указывает на длинный сигнал.И в то же время, когда 10 EMA пересекает 21 EMA, в то время как 21 EMA ниже 50 EMA и 50 EMA ниже 200 EMA.Это указывает на короткий сигнал.

У меня так много кода, но я не знаю, как действовать дальше:

//@version=3
study(title="MA Cross ATTEMPT", overlay=true)

s10ema = ema(close, 10)
s21ema = ema(close, 21)
s50ema = ema(close, 50)
s200ema = ema(close, 200)

plot(s10ema, color = red, linewidth = 1, transp=0)
plot(s21ema, color = aqua, linewidth = 1, transp=0)
plot(s50ema, color = aqua, linewidth = 2, transp=0)
plot(s200ema, color = red, linewidth = 2, transp=0)

mycond = s200ema < s50ema and s50ema < s21ema and s21ema < s10ema
EMACross = cross(s10ema, s21ema) ? s10ema : na, style = cross, linewidth = 4, color = yellow, transp=0

plot(?????)

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 10 октября 2018

Способ сделать это - использовать функцию plotshape().Существуют также различные функции plot, но я предпочитаю использовать plotshape() для этой цели.Обязательно проверьте и другие plot функции.Tradingview имеет хорошую документацию для pine-script.

Кроме того, cross() возвращает 1, если две серии пересеклись друг с другом.Это может быть снизу или сверху, это не имеет значения.Тем не менее, вы хотите вызвать ваше состояние, когда crossover происходит.Для этой цели существует функция с именем crossover() (см. Также crossunder()).

//@version=3
study(title="MA Cross ATTEMPT", overlay=true)

s10ema = ema(close, 10)
s21ema = ema(close, 21)
s50ema = ema(close, 50)
s200ema = ema(close, 200)

plot(s10ema, title="Ema 10", color = red, linewidth = 1, transp=0)
plot(s21ema, title="Ema 21", color = aqua, linewidth = 1, transp=0)
plot(s50ema, title="Ema 50", color = orange, linewidth = 2, transp=0)
plot(s200ema, title="Ema 200", color = blue, linewidth = 2, transp=0)

longCond = crossover(s10ema, s21ema) and (s21ema > s50ema) and (s50ema > s200ema)
shortCond = crossunder(s10ema, s21ema) and (s21ema < s50ema) and (s50ema < s200ema)

plotshape(series=longCond, title="Long", style=shape.triangleup, location=location.belowbar, color=green, text="LONG", size=size.small)
plotshape(series=shortCond, title="Short", style=shape.triangledown, location=location.abovebar, color=red, text="SHORT", size=size.small)

enter image description here

...