求助:金字塔加仓策略下持仓均价退出的正确代码调试
修正后的金字塔加仓退出代码
原代码的核心问题在于未取消之前挂出的盈利退出单(E_L1),导致新的限价退出单(E_L2)无法正常生效;同时金字塔加仓场景下,需要确保退出指令能覆盖所有持仓。以下是修正后的代码:
// 开仓逻辑 if long strategy.cancel("Long") strategy.entry("Long", strategy.long, limit=close) // 仅在首次开仓时挂盈利退出单,加仓时不重复创建 if strategy.opentrades == 1 strategy.exit("E_L1", "Long", profit=100) // 多仓加仓后,以持仓均价退出的逻辑 if ta.crossover(high, strategy.position_avg_price) and strategy.opentrades > 1 // 取消之前的盈利退出单,避免订单逻辑冲突 strategy.cancel("E_L1") // 挂出以持仓均价为限价的退出单,覆盖所有多仓持仓 strategy.exit("E_L2", "Long", limit=strategy.position_avg_price, comment="AvgPriceExit")
关键修正点说明:
- 取消冲突订单:触发均价退出前先取消
E_L1,避免新旧退出指令逻辑冲突导致限价单无法挂出。 - 控制退出单创建时机:仅首次开仓时挂
E_L1盈利单,加仓阶段不再重复生成,减少无效订单干扰。 - 覆盖全持仓退出:
strategy.exit关联"Long"entry后,会对该标的下的所有持仓(包括加仓部分)执行退出操作,适配金字塔加仓的持仓结构。
内容的提问来源于stack exchange,提问作者Mel
相关产品推荐
相关产品推荐

