You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pine Script中精确价格Buy Limit订单无法触发问题咨询

Pine Script中精确价格触发Buy Limit订单未执行的解决方案

问题核心

你设置的Buy Limit订单未触发,主要由两个关键因素导致:

  • process_orders_on_close=true会限制策略仅在K线收盘时处理订单,错过盘中价格触及精确限价的时机;
  • 代码未做持仓判断,每根K线重复提交限价单,易引发订单状态异常。

解决方案及修改代码

//@version=5
VERSION = "V1"
SCRIPT_NAME = "Test " + VERSION

InitCapital = 100000
InitPosition = 100.0
InitCommission = 0.025
InitPyramidMax = 1
CalcOnorderFills = false
// 修改为false,允许盘中实时处理订单
ProcessOrdersOnClose = false
CalcOnEveryTick = true
CloseEntriesRule = "FIFO"

strategy(title=SCRIPT_NAME, shorttitle=SCRIPT_NAME, overlay=true, pyramiding=InitPyramidMax, initial_capital=InitCapital, default_qty_type=strategy.fixed, process_orders_on_close=ProcessOrdersOnClose, default_qty_value=InitPosition, commission_type=strategy.commission.percent, calc_on_order_fills=CalcOnorderFills, calc_on_every_tick=CalcOnEveryTick, precision=9, max_lines_count=500, max_labels_count=500, commission_value=InitCommission)

var float entry = 145.606
// 仅无持仓时提交限价单,避免重复提交
if (strategy.position_size == 0)
    strategy.entry("Long", strategy.long, limit=entry)

关键修改说明

  1. 调整订单处理时机:将process_orders_on_close设为false,让策略在盘中每一个tick实时处理订单,确保价格触及精确限价时立即触发。
  2. 添加持仓判断:通过if (strategy.position_size == 0)限制仅无持仓时提交订单,避免重复提交导致的订单状态冲突。
  3. 保留实时tick计算:calc_on_every_tick=true确保策略对每一个tick的价格变化做出响应,保障精确价格触发的及时性。

额外注意事项

若回测时仍未触发,需确认:

  • 你的精确限价确实出现在回测所使用的tick数据中(大周期K线可能无法体现盘中瞬间触及的价格,建议用小周期数据回测);
  • 回测数据源包含足够细致的tick级价格信息。

内容的提问来源于stack exchange,提问作者Brad P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 07:30:39