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

PineScript 1H周期策略订单执行异常问题求助

Pine Script 1H周期策略止损未触发问题分析与解决

核心原因

  • 1H周期数据精度不足:1H K线仅保存每小时的开盘、最高、最低、收盘价,不会记录开盘后几十秒内的瞬时价格波动。哪怕1M/10S周期里确实触达了止损价,只要这个价格没体现在1H K线的最高/最低价里,回溯测试时策略就会认为止损从未触发,继续持有到止盈。
  • 止损触发逻辑滞后:如果你的止损条件只在1H K线收盘时才检查,而非实时响应价格变化,那么K线内部短暂触及止损后反弹的情况就会被完全忽略。
  • 填充设置无法突破周期限制:调整Strat-Properties-Fill Orders和Recalculate只能优化订单填充规则,但解决不了1H周期本身缺失 intra-bar(K线内部)数据的问题——没有对应的价格数据,填充逻辑根本没法执行止损。

解决办法

  • 引入次周期数据监控止损:用request.security()调用1M或10S周期的价格数据,让策略能捕捉到1H K线内部的价格波动。示例代码:
    // 拉取1M周期的实时高低价
    high_1m = request.security(syminfo.tickerid, "1", high)
    low_1m = request.security(syminfo.tickerid, "1", low)
    
    // 做空时,1M周期最高价触及止损就平仓
    if (strategy.position_size < 0 and high_1m >= sl_price)
        strategy.close_all(comment="SL Triggered")
    
  • 改成实时触发的止损逻辑:把止损条件从“K线收盘时检查”改成“价格突破止损价就立即触发”,确保策略每一个价格tick都验证止损条件,不用等K线走完。
  • 调整订单填充模式:在策略设置里把Fill Orders改成Immediate or Cancel,配合次周期的触发信号,尽量让订单在止损价触及的第一时间执行。
  • 校验K线数据完整性:确认1H K线的最高/最低价是否真的包含了止损触发价,如果数据源没记录这个瞬时价格,要么换更精准的数据源,要么把止损价调整到1H K线能覆盖的范围。

参考资料

  • Pine Script 官方文档中request.security()函数的使用说明
  • Pine Script 策略订单执行逻辑的官方说明
  • 回溯测试中 intra-bar 价格处理的相关官方指引

内容的提问来源于stack exchange,提问作者While-E

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:12:35