Pine Script strategy.entry函数报错及止损止盈逻辑实现求助
问题解决:Pine Script 止损限价单类型不匹配报错
报错原因
你把布尔类型的buySignal直接传给了strategy.entry的stop和limit参数,这两个参数需要具体的价格数值(浮点型),而非布尔值(true/false),所以触发类型不匹配错误。
修正方案
按照你的逻辑,我们需要在buySignal满足时,分别计算止损价和限价的具体数值,再传入订单函数,同时用when参数控制订单触发时机。
完整修正代码
// 原买卖信号逻辑 buySignal = low < lower[1] and close > lower and close > open or close > upper and ta.crossover(rsiValue, rsiOverbought) and close > open sellSignal = high > upper[1] and close < upper and close < open or close < lower and ta.crossunder(rsiValue, rsiOversold) and close < open // 计算止损限价单的价格(仅在信号触发时赋值) longStopPrice = buySignal ? low[1] - 15 * syminfo.mintick : na longLimitPrice = buySignal ? high + 15 * syminfo.mintick : na // 触发止损限价多单 strategy.entry("Enter Long", strategy.long, stop=longStopPrice, limit=longLimitPrice, oca_name="entries", oca_type=strategy.oca.cancel, when=buySignal)
代码说明
longStopPrice:当buySignal为true时,取前一根K线最低价减15个最小变动单位;否则设为na(无效值)longLimitPrice:当buySignal为true时,取当前K线最高价加15个最小变动单位;否则设为nawhen=buySignal:指定仅在信号触发时执行订单,避免非信号K线生成无效订单- 确保
stop和limit参数传入的是浮点型价格,完全符合Pine Script的参数类型要求
内容的提问来源于stack exchange,提问作者Sanjay Shah
相关产品推荐
相关产品推荐

