Я новичок в скрипте pine и хочу получать однократное оповещение в случае переключения тренда (с зеленого на красный и с красного на зеленый).
Кто может помочь мне получить оповещения для этого скрипта?
//@version=4
study("Hilo script with alert",overlay=true)
period=input(10,"Period")
shift=input(1,"Shift")
exp=input(false,"EMA")
max=exp?ema(high[shift],period):sma(high[shift],period)
min=exp?ema(low[shift],period):sma(low[shift],period)
pos=close>max?-1:close<min?1:0
pos:=pos==0?nz(pos[1]):pos
hilo=pos==1?max:min
plotbar(hilo,hilo,hilo,hilo,color=pos==1?color.red:color.green)
Большое спасибо за всю вашу помощь заранее
Моя идея заключалась в следующем:
sell = pos:=1
buy = pos==1
alertcondition(sell,title='sell', message='sell')
alertcondition(buy,title='buy', message='buy')
но я получаю предупреждение о каждой свече. И это не то, чего я хочу.
После поиска в интернете я смог найти это:
// Deternine if we are currently LONG
isLong = false
isLong := nz(isLong[1], false)
// Determine if we are currently SHORT
isShort = false
isShort := nz(isShort[1], false)
// Buy if the buy signal is triggered and we are not already long
buySignal = not isLong
// Sell if the sell signal is triggered and we are not already short
sellSignal= not isShort
if (buySignal)
isLong := true
isShort := false
if (sellSignal)
isLong := false
isShort := true
alertcondition(buySignal,title='buy',message='buy')
alertcondition(sellSignal,title='sell', message='sell')
Но я получаю некоторые ошибки в Tradingview:
//@version=4
study("Hilo script with alertr",overlay=true)
period=input(8,"Period")
shift=input(1,"Shift")
exp=input(false,"Exponential moving average")
max=exp?ema(high[shift],period):sma(high[shift],period)
min=exp?ema(low[shift],period):sma(low[shift],period)
pos=close>max?-1:close<min?1:0
isLong:=pos==0?nz(pos[1]):pos
isShort=pos==1?max:min
plotbar(isShort,isShort,isShort,isShort,color=pos==1?color.red:color.green)
// Deternine if we are currently LONG
isLong = false
isLong := nz(isLong[1], false)
// Determine if we are currently SHORT
isShort = false
isShort := nz(isShort[1], false)
// Buy only if the buy signal is triggered and we are not already long
buySignal = not isLong
// Sell only if the sell signal is triggered and we are not already short
sellSignal= not isShort
if (buySignal)
isLong := true
isShort := false
if (sellSignal)
isLong := false
isShort := true
alertcondition(sellSignal,title='sell', message='sell')
alertcondition(buySignal,title='buy', message='buy')
после вашего ценного отзыва я адаптирую эти строки:
isLong=pos==0?nz(pos[1]):pos
isShort=pos==1?max:min
plotbar(isShort,isShort,isShort,isShort,color=pos==1?color.red:color.green)
// Deternine if we are currently LONG
isLong = false
isLong := nz(isLong[1], false)
// Determine if we are currently SHORT
isShort = false
isShort := nz(isShort[1], false)
Теперь я получаю в строке 14 ошибку, отмеченную >>>>:
// Deternine if we are currently LONG
>>>>isLong = false
isLong := nz(isLong[1], false)
isLong
; строка 18: переменнаяisShort
уже объявлена. Скрипт 'Hilo script with alertr' сохранен - person C OEz   schedule 10.12.2019=
для объявления переменных. Вы должны использовать оператор:=
для переназначения значений уже определенным переменным. - person Baris Yakut   schedule 10.12.2019:=
, но на самом деле он определяет переменную, поэтому вместо этого вы должны использовать=
. В строке 18 у вас есть оператор=
, ноisShort
уже определен в строке 10. Вместо этого вы должны использовать оператор:=
в строке 18. - person Baris Yakut   schedule 10.12.2019=
при первом объявлении переменной. Используйте:=
в следующий раз, когда вы хотите присвоить какое-либо значение ранее определенным переменным. - person Baris Yakut   schedule 10.12.2019