使用strategy.entry自定义限价无法触发买入信号的问题排查
Pine Script限价单未触发的常见原因及解决办法
限价未被后续价格触碰
你用当前K线收盘价计算的buyhere,需要后续K线的盘中价格(任意tick或最低价)达到这个价位才会触发。如果后续K线直接跳空高开越过buyhere,或者最低价始终低于该价格,限价单就不会成交。比如当前收盘100,buyhere是100.05,下一根K线开盘直接100.1且全程没回落到100.05,订单就不会触发。限价单仅在信号周期的下一根K线有效
strategy.entry生成的限价单默认只在发出信号的K线之后的第一根K线内有效,如果这根K线没触发,订单会自动取消。如果需要限价单持续有效直到成交,要把逻辑改成持续判断:只要未持仓且满足入场信号,就重复发送限价单,示例代码:buyCondition = crossover(sma(close,5), sma(close,20)) buyhere = close * 1.0005 if (buyCondition and strategy.position_size == 0) strategy.entry("LONG", strategy.long, limit=buyhere)价格精度与品种最小变动单位不匹配
部分交易品种有固定的最小价格变动单位(tick size),如果buyhere的计算结果不符合这个精度,平台会自动调整价格,导致和预期价位不符。可以用品种内置参数校准价格:buyhere = round(close * 1.0005 / syminfo.mintick) * syminfo.mintick策略执行模式限制
检查策略设置面板里的「订单执行」选项,如果设置为「仅在收盘价执行」,限价单只会在收盘价等于限价时成交,几乎无法触发。需要改成「在每个tick执行」或「盘中执行」模式。缺少明确的入场触发条件
如果代码里没有设置触发strategy.entry的前置条件(比如指标金叉、突破信号),订单可能根本没被发出。必须在满足特定条件时才发送限价单,参考上面的代码示例。
内容的提问来源于stack exchange,提问作者sanwhere
相关产品推荐
相关产品推荐

