TradingView PineScript策略警报与回测成交价格不一致问题求助
问题原因
默认情况下TradingView策略的信号在K线收盘时确认,订单默认在下一根K线开盘价成交,但警报如果设置为K线收盘触发,就会出现价格不匹配的问题。
解决方案1(推荐:回测匹配实盘警报价格,均采用K线收盘价成交)
只需要修改两处代码即可:
- 修改头部的
strategy声明,新增process_orders_on_close=true参数,允许策略在K线收盘时直接执行订单
修改后的strategy代码:
strategy(title = "Open Close Cross Strategy R5.1 revised by JustUncleL", shorttitle = "OCC Strategy R5.1", overlay = true, pyramiding = 0, overlay=true , default_qty_value=100 , initial_capital=100 , default_qty_type=strategy.cash, calc_on_every_tick=false, process_orders_on_close=true)
- 修改订单执行逻辑,强制订单以当前K线收盘价成交,把原来的
if (inDateRange)块改成如下代码:
if (inDateRange) strategy.entry("long", strategy.long, limit=close, when=buying ) strategy.entry("short", strategy.short, limit=close, when=selling )
修改完成后,回测的所有订单都会以信号触发时的K线收盘价成交,和你实盘警报触发时的价格完全一致,不需要调整警报的任何设置。
解决方案2(实盘警报匹配回测价格,均采用下一根K线开盘价成交)
不需要修改策略代码,只需要调整警报的触发规则:
- 警报条件设置为
xlong[1](做多信号)和xshort[1](做空信号),也就是上一根K线出现交易信号 - 警报触发时机设置为「K线开盘时」
这样警报会在下一根K线刚开盘时触发,触发时的价格就是回测的成交价格,二者完全匹配。
内容的提问来源于stack exchange,提问作者xxrezaxx
相关产品推荐
相关产品推荐

