TradingView回测能否以K线开盘价做空?入场价配置咨询
TradingView回测入场价统一规则及开盘价做空的实现方案
嘿,这个问题我之前也帮朋友捋过,来给你拆解清楚:
为什么会出现多空入场价不一致的情况?
其实核心是你的信号触发时机和TradingView策略的默认执行逻辑在起作用:
- 你的做多信号
buysignals大概率是基于K线收盘价确认的(比如用close > 均线这类条件),策略默认会在信号确认的下一根K线开盘时执行市价单,所以入场价是下一根K线的开盘价。 - 而做空信号
sellsignals可能是盘中触发的(比如用high 突破压力位这类盘中就满足的条件),这时候策略会在当前K线收盘时执行入场,自然就用了当前K线的收盘价。
怎么统一入场价规则?
有两种靠谱的方法,按需选择:
方法1:通过策略设置强制统一触发逻辑
直接在策略的设置面板里调整信号确认规则:
- 打开策略的「设置」→「输入」选项卡
- 找到「确认信号」选项,选择「仅收盘价」
这样不管多空信号,都会等到当前K线收盘确认后,在下一根K线的开盘价执行入场,完美统一规则。
方法2:手动指定入场价格(代码层面控制)
如果你需要更灵活的自定义,直接在strategy.entry()里指定入场价格即可:
比如要让多空都用下一根K线的开盘价入场,代码可以这么写:
// 先开启仅收盘价确认(也可以在设置里手动开启) strategy("统一入场价策略", overlay=true, confirm_trades=strategy.confirm_close) // 示例信号(基于收盘价) buysignals = close > ta.sma(close, 20) sellsignals = close < ta.sma(close, 20) // 多空都指定下一根K线开盘价入场(市价单默认就是这个逻辑,也可以用limit明确指定) strategy.entry("LONG ENTRY", strategy.long, when=buysignals) strategy.entry("SHORT ENTRY", strategy.short, when=sellsignals)
如果你的做空信号是盘中触发的,想强制用下一根K线开盘价,也可以这么写:
if (sellsignals) // 指定下一根K线的开盘价作为入场价 strategy.entry("SHORT ENTRY", strategy.short, limit=open[1])
注:open[1]在当前K线属于“未来数据”,但回测时是基于历史数据,下一根K线的开盘价是已知的,所以完全可以正常使用。
确认:TradingView回测支持以K线开盘价做空吗?
必须支持!不管是通过设置面板的「仅收盘价确认」让策略自动执行,还是代码层面手动指定开盘价,都能实现做空以K线开盘价入场的需求。
内容的提问来源于stack exchange,提问作者Pucka
相关产品推荐
相关产品推荐

