Новое в Pine скрипт, у меня есть вопрос об условиях соединения - PullRequest
1 голос
/ 29 октября 2019

Я новичок в сценарии Pine. Использую FX dreema. но хочу перейти к торговому виду.

Хотите написать предупреждение о том, что EMA находятся в правильном порядке, чем происходит откат к EMA. Но вы не знаете, как связать 2 условия.

не найти справочное руководство, которому легко следовать

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

    s20ema = ema(close, 20)
    s50ema = ema(close, 50)
    s80ema = ema(close, 80)


    plot(s20ema, title="Ema 20", color = yellow, linewidth = 1, transp=0)
    plot(s50ema, title="Ema 50", color = red, linewidth = 1, transp=0)
    plot(s80ema, title="Ema 80", color = white, linewidth = 2, transp=0)


    longCond = crossover(s20ema, s50ema) and (s20ema > s80ema) and (s50ema > s80ema)
    shortCond = crossunder(s20ema, s50ema) and (s20ema < s80ema) and (s50ema < s80ema)

    buy_pullback = open > s20ema and low < s20ema
    sell_pullback = open < s20ema and low > s20ema

    alertcondition(buy_pullback, title='Long', message='EURAUD_buy')
    alertcondition(sell_pullback, title='Short', message='EURAUD_sell')

1 Ответ

1 голос
/ 30 октября 2019

Лучше изучить Pine v4, которая является текущей версией, поэтому этот код использует v4 (см. Первую строку). Ваш код изменен так, что он отслеживает два разных состояния: longCond и shortCond, и фон диаграммы отражает их. В состоянии longCond, buy_pullback может произойти. Когда в состоянии shortCond, может произойти sell_pullback. Я изменил low на high в вашем sell_pullback состоянии. Комментарии в коде объясняют, что происходит. Не уверен, что это то, что вам нужно, но это может помочь вам в этом.

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

s20ema = ema(close, 20)
s50ema = ema(close, 50)
s80ema = ema(close, 80)

plot(s20ema, title="Ema 20", color = color.yellow, linewidth = 1, transp=0)
plot(s50ema, title="Ema 50", color = color.red, linewidth = 1, transp=0)
plot(s80ema, title="Ema 80", color = color.white, linewidth = 2, transp=0)

// ————— This switches between long and short conditions.
// The declarations with "var" allow the variable's value to be preserved throughout bars.
var longCond = false
var shortCond = false
if not longCond and crossover(s20ema, s50ema) and (s20ema > s80ema) and (s50ema > s80ema)
    // These ":=" assignment operators are required because we are changing the value of previously declared variables.
    // If we used "=" here, we would be declaring new variables local to each "if" block that would disappear once out of it.
    longCond := true
    shortCond := false
if not shortCond and crossunder(s20ema, s50ema) and (s20ema < s80ema) and (s50ema < s80ema)
    shortCond := true
    longCond := false
// This colors the background to show which state you are in.
bgcolor(longCond ? color.green : shortCond ? color.red : na, transp = 85)

// The entry triggers only occur when we are in the proper state.
buy_pullback = longCond and crossover(open, s20ema) and low < s20ema
sell_pullback = shortCond and crossunder(open, s20ema) and high > s20ema

// These plot when your entries occur, so that you can verify where they trigger.
plotchar(buy_pullback, "buy_pullback", "▲", location.belowbar, color.lime, size = size.tiny)
plotchar(sell_pullback, "sell_pullback", "▼", location.abovebar, color.fuchsia, size = size.tiny)

alertcondition(buy_pullback, title='Long', message='EURAUD_buy')
alertcondition(sell_pullback, title='Short', message='EURAUD_sell')

enter image description here

Вы найдете полезную информацию, чтобы начать обучениеСосна здесь: http://www.pinecoders.com/

...