PineScript问题:入场K线前10根K线最低点止损设置失效求助
问题分析与修复方案
问题根源:你代码里的
lowest(source=low, length=10)是计算包含当前入场K线在内的10根K线最低点,但你需要的是入场K线之前10根的最低值,范围偏差导致止损线不符合预期。修复步骤:
在设置止损价longsl时,给lowest()结果加上[1]偏移,这样就能获取到入场K线前一根位置上的10周期最低点,精准排除当前入场K线:if (long_entry) longsl:=lowest(low, 10)[1]修正后的完整代码:
strategy("MACD Strategy", overlay=true) fastLength = input(12) slowlength = input(26) MACDLength = input(9) MACD = ema(close, fastLength) - ema(close, slowlength) aMACD = ema(MACD, MACDLength) delta = MACD - aMACD var float longsl=na long_entry=crossover(delta, 0) if (long_entry) // 取入场K线之前10根K线的最低点,[1]排除当前入场K线 longsl:=lowest(low, 10)[1] strategy.entry("Long",strategy.long,when=long_entry) strategy.exit("Long exit","Long",limit=xxxxx,stop=longsl) plot(strategy.position_size!=0 or long_entry ? longsl:na,title = "SL",color = color.red,style = plot.style_linebr)
- 补充说明:
- Pine Script中,序列值后加
[n]代表取该序列n根K线之前的数值,[1]就是前一根K线对应的结果。 - 原逻辑包含入场K线的最低点,会让止损线可能出现在入场K线的低位,和你需求的"入场前10根"完全不符,调整偏移后就能匹配预期。
- Pine Script中,序列值后加
内容的提问来源于stack exchange,提问作者LKY
相关产品推荐
相关产品推荐

