TradingView实时策略问题:设置calc_on_every_tick=true仍延迟下单
TradingView策略订单延迟触发问题解决
问题原因
你的订单延迟到下一根K线执行,主要是两个细节出错:
- 订单ID不匹配:
strategy.exit里的from_entry写的是'Largo',但入场订单的ID是"Long",两者对不上会导致退出逻辑失效,还可能干扰订单的即时执行判断。 - 默认执行逻辑限制:就算开了
calc_on_every_tick=true,如果没明确策略的资金和订单参数,模拟环境可能会默认在下一根K线执行订单。
修正后的完整代码
//@version=5 strategy("Mi estrategia", overlay=true, calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=1000, initial_capital=10000) // 计算上一根K线收盘价与当前K线开盘价的差值 diferencia = close[1] - open // 入场:差值小于-3时市价做多 if diferencia < -3 strategy.entry("Long", strategy.long) // 修正关联ID,同时把盈利目标改成点数(示例为3,按需调整) strategy.exit('Exit Long', from_entry='Long', profit=3)
关键调整点
- 对齐订单ID:把
strategy.exit的from_entry改成"Long",和入场订单的ID保持一致,确保退出逻辑能正确绑定入场单。 - 明确资金参数:添加
default_qty_type、default_qty_value和initial_capital,让策略模拟更贴近真实交易,避免资金设置模糊导致的执行延迟。 - 修正盈利目标:原代码里
profit=close[1]是把上一根收盘价设为盈利目标,不符合常规的点数止盈需求,改成固定点数更合理。
额外验证步骤
- 回测选Tick级别数据:必须用tick级历史数据回测,不然开了
calc_on_every_tick=true也没法模拟真实的即时触发效果。 - 检查订单填充模式:在策略设置里把“订单填充”改成“即时填充”,别用默认的“下一根K线填充”。
内容的提问来源于stack exchange,提问作者Mario Rodríguez López
相关产品推荐
相关产品推荐

