Pine script 与策略信号相比,警报信号计数不同

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

我试图根据以下附加的研究生成警报。警报已生成,但与策略信号不同。今天我为TCS生成了信号。根据策略,今天有5笔交易,但在警报方面,我得到了几乎12-15个信号。我不知道我在哪里失踪了。如果有人知道这件事,请帮助我

作为参考,我附加了一个快照


这是一项研究


//@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)