Pine script 与策略信号相比,警报信号计数不同
我试图根据以下附加的研究生成警报。警报已生成,但与策略信号不同。今天我为TCS生成了信号。根据策略,今天有5笔交易,但在警报方面,我得到了几乎12-15个信号。我不知道我在哪里失踪了。如果有人知道这件事,请帮助我 作为参考,我附加了一个快照Pine script 与策略信号相比,警报信号计数不同,pine-script,Pine Script,我试图根据以下附加的研究生成警报。警报已生成,但与策略信号不同。今天我为TCS生成了信号。根据策略,今天有5笔交易,但在警报方面,我得到了几乎12-15个信号。我不知道我在哪里失踪了。如果有人知道这件事,请帮助我 作为参考,我附加了一个快照 这是一项研究 //@version=4 study("Study1_v4", overlay=true) tim=input('30') //160 isSession = input(defval = true, title = "Apply T
这是一项研究
//@version=4
study("Study1_v4", overlay=true)
tim=input('30')
//160
isSession = input(defval = true, title = "Apply Trading Session", type = input.bool)
sess = input(defval = "0935-1500", title="Trading Session")
t = time(timeframe.period, sess)
sessionOpen = isSession ? (na(t) ? false : true):true
startYear = input(defval = 2020, title = "From Year", type = input.integer)
startMonth = input(defval = 1, title = "From Month", type = input.integer )
startDay = input(defval = 1, title = "From Day", type = input.integer)
endYear = input(defval = 2112, title = "To Year", type = input.integer)
endMonth = input(defval = 1, title = "To Month", type = input.integer)
endDay = input(defval = 1, title = "To Day", type = input.integer)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(startYear, startMonth, startDay, 00, 00) // backtest start window
finish = timestamp(endYear, endMonth, endDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
longCondition = (crossover(security(syminfo.tickerid, tim, close,barmerge.gaps_off,barmerge.lookahead_on),security(syminfo.tickerid, tim, open,barmerge.gaps_off,barmerge.lookahead_on)) and sessionOpen and window())
shortCondition = (crossunder(security(syminfo.tickerid, tim, close,barmerge.gaps_off,barmerge.lookahead_on),security(syminfo.tickerid, tim, open,barmerge.gaps_off,barmerge.lookahead_on)) and sessionOpen and window())
val = 0
if (longCondition)
val := 1
if (shortCondition)
val := -1
//if(not sessionOpen)
// val := -3
plot(val, title="type", color=color.black)
//defining plots above are required only for the purpose of passing dynamic variables to alerts. Their color is set to 'na' so that they don't display on the screen.
alertcondition(val !=0 or not sessionOpen, title='Alert', message='{{ticker}}, price = {{close}} OrderType={{plot("type")}} at time = {{time}}')
//@版本=4
研究(“研究1_v4”,叠加=真)
tim=输入('30')
//160
isSession=input(deffal=true,title=“应用交易会话”,type=input.bool)
sess=输入(deffal=“0935-1500”,title=“交易时段”)
t=时间(timeframe.period,sess)
sessionOpen=isSession?(na(t)?假:真:真
startYear=input(deffal=2020,title=“From Year”,type=input.integer)
startMonth=input(deffal=1,title=“From Month”,type=input.integer)
startDay=input(deffal=1,title=“From Day”,type=input.integer)
endYear=input(deffal=2112,title=“To Year”,type=input.integer)
endMonth=input(deffal=1,title=“To Month”,type=input.integer)
endDay=input(deffal=1,title=“To Day”,type=input.integer)
showDate=input(deffal=true,title=“显示日期范围”,type=input.bool)
start=timestamp(startYear,startMonth,startDay,00,00)//回溯测试开始窗口
finish=时间戳(endYear、endMonth、endDay、23、59)//回溯测试完成窗口
window()=>时间>=开始和时间可能的原因在于金字塔-策略不进入相同的位置,您的研究-感谢您的回答。我试着用金字塔来调整我的策略。不过,我还是遇到了同样的问题。您也可以尝试上述脚本。我认为问题出在警报的not sessionOpen
条件下。当not sessionOpen
为真时,请注意此问题策略不会发送订单,但会触发警报
//@version=4
strategy("Strategy1_v4", overlay=true,process_orders_on_close=true)
tim=input('30')
//160
isSession = input(defval = true, title = "Apply Trading Session", type = input.bool)
sess = input(defval = "0935-1500", title="Trading Session")
t = time(timeframe.period, sess)
sessionOpen = isSession ? (na(t) ? false : true):true
startYear = input(defval = 2020, title = "From Year", type = input.integer)
startMonth = input(defval = 1, title = "From Month", type = input.integer )
startDay = input(defval = 1, title = "From Day", type = input.integer)
endYear = input(defval = 2112, title = "To Year", type = input.integer)
endMonth = input(defval = 1, title = "To Month", type = input.integer)
endDay = input(defval = 1, title = "To Day", type = input.integer)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(startYear, startMonth, startDay, 00, 00) // backtest start window
finish = timestamp(endYear, endMonth, endDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
longCondition = (crossover(security(syminfo.tickerid, tim, close,barmerge.gaps_off,barmerge.lookahead_on),security(syminfo.tickerid, tim, open,barmerge.gaps_off,barmerge.lookahead_on)) and sessionOpen and window())
shortCondition = (crossunder(security(syminfo.tickerid, tim, close,barmerge.gaps_off,barmerge.lookahead_on),security(syminfo.tickerid, tim, open,barmerge.gaps_off,barmerge.lookahead_on)) and sessionOpen and window())
val = 0
if (longCondition)
val := 1
strategy.entry("long", strategy.long)
if (shortCondition)
val := -1
strategy.entry("short", strategy.short)
//if(not sessionOpen)
// val := -3
strategy.close_all(when = not sessionOpen)
plot(val, title="type", color=color.red)