基于移动平均线数值的平仓设置需求及代码优化咨询
按对应K线均线数值精准平仓的Pine Script策略优化
你的原策略通过收盘价低于20日均线触发平仓,但如果要更贴合“按对应K线均线数值执行平仓”的需求(包括实盘及时触发、回测逻辑一致),可以从平仓条件和策略参数两方面优化:
优化方案1:盘中触及MA20立即平仓(市价单)
这个方案会在价格盘中触及或低于当前K线的MA20时,用市价单执行平仓,兼顾回测准确性和实盘及时性:
//@version=4 strategy("MA20平仓策略", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=100000, commission_type=strategy.commission.percent, commission_value=0.1, margin_long=100, margin_short=100, allow_entry_in=strategy.long) // 允许同一根K线内开仓后直接平仓 // 定义指标 rsi = rsi(close, 14) ma20 = sma(close, 20) // 开仓/平仓条件 enterCondition = crossover(rsi, 60) exitCondition = low <= ma20 or close <= ma20 // 覆盖盘中触及MA20的情况 // 绘制指标 plot(rsi, "RSI", color=color.blue) hline(60, "开仓阈值", color=color.green) plot(ma20, "MA20", color=color.red) // 策略执行 strategy.entry("多单", strategy.long, when=enterCondition) strategy.close("多单", when=exitCondition, comment="MA20触发平仓")
优化方案2:精准在MA20价位平仓(限价单)
如果需要严格在MA20的数值价位平仓,可以在开仓时直接挂出限价平仓单,价格触及均线数值时自动成交,回测与实盘的一致性更强:
//@version=4 strategy("MA20限价平仓策略", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=100000, commission_type=strategy.commission.percent, commission_value=0.1) // 定义指标 rsi = rsi(close, 14) ma20 = sma(close, 20) // 开仓条件 enterCondition = crossover(rsi, 60) // 绘制指标 plot(rsi, "RSI", color=color.blue) hline(60, "开仓阈值", color=color.green) plot(ma20, "MA20", color=color.red) // 开仓同时挂限价平仓单,平仓价为当前K线的MA20数值 strategy.entry("多单", strategy.long, when=enterCondition) strategy.exit("MA20限价平仓", "多单", limit=ma20, when=enterCondition)
关键说明
- 两种方案均使用当前K线的MA20数值计算,无未来函数,回测结果可信
- 方案1的
allow_entry_in=strategy.long参数确保实盘中如果开仓后价格快速回落至MA20,能在同一根K线内完成平仓 - 方案2的限价单会严格在MA20价位成交,适合追求精准平仓价位的场景
内容的提问来源于stack exchange,提问作者Kaushal M Mehta
相关产品推荐
相关产品推荐

