Pine Script中strategy.entry的limit参数被忽略原因咨询
问题解析与解决方案
核心误解:多单limit参数的逻辑搞反了
你对strategy.entry的limit参数理解完全错了——多单的limit是用来挂「限价买入单」,逻辑是等价格跌到设定值(或更低)时才开仓,而不是等价格上涨到该值。
为什么三种代码回测结果一致?
你的三种写法回测结果相同,本质是因为这三种情况都触发了「立即成交」:
- 无
limit参数:默认是市价单,信号触发时直接以当前价格开仓。 - 原代码
limit=buyPrice:如果触发信号时的当前价格 ≤buyPrice,限价单的成交条件已经满足,会立即以当前价格开仓,和市价单无区别。 limit=1000000:这个值远高于当前行情价格,当前价格必然满足「≤1000000」,所以限价单也会立即成交,效果和前两者完全一致。
只有当buyPrice 高于 信号触发时的当前价格时,多单的limit参数才会真正进入「等待状态」——但此时是等价格跌到buyPrice再开仓,这和你想要的「等价格上涨开仓」完全是两回事。
正确用法:要等价格上涨开多,用stop参数
如果你的需求是等待价格上涨到buyPrice时再开多仓,应该用stop参数而非limit:
strategy.entry('Long', strategy.long, stop=buyPrice, comment=enterLongComment)
多单的stop参数是「止损开仓单」逻辑:当价格上涨到等于或高于buyPrice时,触发开仓,这才是你想要的效果。
再梳理下两类参数的核心区别
- 多单场景:
limit=X:愿意以≤X的价格买入,价格跌到X(或更低)时成交stop=X:愿意以≥X的价格买入,价格涨到X(或更高)时成交
- 空单场景:
limit=X:愿意以≥X的价格卖出,价格涨到X(或更高)时成交stop=X:愿意以≤X的价格卖出,价格跌到X(或更低)时成交
内容的提问来源于stack exchange,提问作者dorien
相关产品推荐
相关产品推荐

