Pine TradingView - скрипт оповещения, не запускающийся при пересечении ema - PullRequest
0 голосов
/ 12 марта 2020

Я наткнулся на трейдингвью и попытался создать скрипт, чтобы активировать предупреждение для стратегии хеджина. В основном это работает как ожидалось, но только для ценностей в прошлом. (Я думаю, что это имеет какое-то отношение к расчету EMA150, что он работает только для значений старше 150 дней, но не уверен в этом)

Basi c Идея:

Первое предупреждение: если цена акции находится под EMA150 и EMA5 всегда сигнал на покупку

Впервые я использую эту функцию сценария, поэтому поправьте меня, если я сделал это совершенно неправильно!

//
study(title="Ema cross alert", overlay=true)

// var long and short to check if the last signal was long or short
var long = 1
var short = 1
resCustom = input(title="EMA Timeframe", type=input.resolution, defval="1440")
source = close

// input for ema
len2 = input(10, minval=1, title="EMA1")
len3 = input(5, minval=1, title="EMA2")
len4 = input(150 , minval=1, title="EMA3")

// calculate ema
ema2 = ema(source, len2)
ema3 = ema(source, len3)
ema4 = ema(source, len4)

// define cond.. for alert and last.. for timestamp

condlong = int(na)
condshort = int(na)
lastlong = int(na)
lastshort = int(na)

// check if close is under ema150, than activate long and short alerts with ema10 and ema5 crossings

if (close < ema(source, len4))
    if crossover(ema3, ema2)
        condlong = false
        condshort = false

        if (long == 1) 
            lastlong := time
            short := 1
            long := 0
            condlong = true
    else


        condlong = false
        condshort = false
        if crossunder(ema3, ema2)

            if (short == 1)

                lastshort := time
                long := 1
                short := 0
                condshort = true

else

    condlong = false
    condshort = false

// check if close is over ema150 if yes --> always long signal

if (short == 0 and long == 1 and (close > ema(source, len4)))
    condlong = true
    lastlong := time
    short := 1
    long := 0

// Trigger alerts

alertcondition(condlong, "Long / Buy")
alertcondition(condshort, "Short / Sell")

// Plot alerts

plotshape(lastlong, title="Long", color=color.green, style=shape.diamond, size=size.small, offset=0)
plotshape(lastshort, title="Short", color=color.red, style=shape.diamond, size=size.small, offset=0)

// plot ema

plot(ema2, "Ema 2", style=plot.style_line, linewidth=2, color=color.red)
plot(ema3, "Ema 3", style=plot.style_line, linewidth=2, color=color.blue)
plot(ema4, "Ema 4", style=plot.style_line, linewidth=2, color=color.green)```



...