请求为MovingAvg2Line Cross策略设置100点止损(附源码)
为双均线交叉策略添加100点止损的解决方案
修改后的完整策略代码
//@version=5 strategy("MovingAvg2Line Cross with 100 Pips Stop Loss", overlay=true) // 自定义参数 fastLength = input(9, title="快速均线周期") slowLength = input(18, title="慢速均线周期") stopLossPips = input(100, title="止损点数(Pips)") price = close mafast = ta.sma(price, fastLength) maslow = ta.sma(price, slowLength) // 适配品种的点数转换逻辑 pipSize = syminfo.mintick * 10 // 多数品种1pip=10个最小变动单位(如EURUSD的mintick为0.00001,1pip=0.0001) stopLossDistance = stopLossPips * pipSize // 做多入场+止损设置 if (ta.crossover(mafast, maslow)) strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE") strategy.exit("Exit Long", "MA2CrossLE", stop=close - stopLossDistance) // 做空入场+止损设置 if (ta.crossunder(mafast, maslow)) strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE") strategy.exit("Exit Short", "MA2CrossSE", stop=close + stopLossDistance) // 可选:绘制均线 plot(mafast, color=color.blue, title="快速均线") plot(maslow, color=color.red, title="慢速均线")
核心逻辑说明
- 点数适配:用
syminfo.mintick自动获取当前品种的最小变动单位,通过乘以10转换为标准1pip的价格差,避免手动适配不同品种的麻烦。 - 止损绑定:每一笔开仓指令后,通过
strategy.exit绑定对应止损位——做多时止损在入场收盘价下方100点,做空时在入场收盘价上方100点。 - 可调整性:把止损点数做成输入参数,你可以直接在策略设置界面修改数值,无需改动代码。
内容的提问来源于stack exchange,提问作者Eldo Rado
相关产品推荐
相关产品推荐

