Limit(止盈)/Stop(止损)触发同时执行入场订单的实盘实现方案咨询
Pine Script 实盘场景同步触发平仓与新开订单方案
可行性结论
实时K线(实盘/模拟盘实时tick计算)场景下可以实现该需求,具体实现步骤如下:
实现步骤
- 第一步:配置必要的策略运行参数
在strategy()声明语句中添加两个参数:calc_on_order_fills = true:开启订单成交后立即触发一次策略计算,不需要等待当前K线走完process_orders_on_close = false:适配实时tick级别的订单处理逻辑,避免订单延迟到K线收盘才执行
示例配置:strategy("你的策略名称", overlay=true, calc_on_order_fills=true, process_orders_on_close=false, initial_capital=10000) - 第二步:记录上一次入场的止损止盈价位
定义变量持久化存储你设置的平仓触发价位,避免K线刷新后数据丢失:// 存储多头仓位对应的止损、止盈价位 var float last_buy_stop = na var float last_buy_limit = na // 多头入场时赋值对应的平仓价位 if (strategy.position_size > 0 and strategy.position_size[1] == 0) last_buy_stop = level_dn last_buy_limit = level_up - 第三步:监听平仓事件同步提交新入场订单
监听策略持仓变化,当原持有仓位平仓完成的瞬间,立即提交你需要的新入场订单即可:// 多头仓位平仓触发时(止损/止盈成交)提交新订单 if (strategy.position_size == 0 and strategy.position_size[1] > 0) // 此处替换为你需要的新入场订单逻辑,可直接用记录的last_buy_stop/last_buy_limit作为新单价位 strategy.entry("New Entry", strategy.long, stop=last_buy_stop) // 示例:以止损价位开新多单,可按需修改
注意事项
实盘部署前请先在模拟盘验证逻辑适配性,部分交易所订单推送存在毫秒级延迟,可添加1个最小价位跳动(
syminfo.mintick)的容错阈值,避免价位偏差导致漏单。
内容的提问来源于stack exchange,提问作者Max me
相关产品推荐
相关产品推荐

