Amibroker AFL策略修改:分批止盈、保本止损及上调目标位
Amibroker AFL 策略修改:分批止盈+保本止损+上调止盈目标
以下是满足需求的修改后代码,核心通过手动半仓止盈触发+动态调整止损/止盈参数实现逻辑:
// 初始做多进场条件 long_entry_condition = Close > EMA(Close, 50); Buy = long_entry_condition; BuyPrice = Close; PositionSize = 100; // 初始全仓买入 // 策略参数定义 initial_stop_loss_points = 10; partial_take_profit_points = 10; // 10点盈利平半仓 final_take_profit_points = 30; // 剩余仓位止盈上调至30点 // --- 半仓止盈触发逻辑 --- // 持仓状态下,价格达到买入价+10点时,卖出50%仓位 Sell = (Close >= BuyPrice + partial_take_profit_points) AND PositionSize > 0; SellPrice = Close; PositionSize = -50; // 卖出当前持仓的50% // --- 动态设置止损与止盈价格 --- // 初始化止损为买入价-10点,止盈为买入价+30点 current_stop_loss = BuyPrice - initial_stop_loss_points; current_profit_target = BuyPrice + final_take_profit_points; // 半仓卖出后,将剩余仓位的止损调整为保本价(买入价) if (Sell) { current_stop_loss = BuyPrice; } // 应用止损规则(基于价格模式) ApplyStop(Type=stopTypeLoss, mode=stopModePrice, Amount=current_stop_loss, ExitAtStop=1, Volatile=False, ReEntryDelay=0); // 应用止盈规则(基于价格模式) ApplyStop(Type=stopTypeProfit, mode=stopModePrice, Amount=current_profit_target, ExitAtStop=1, Volatile=False, ReEntryDelay=0);
关键修改说明:
- 半仓止盈实现:通过
Sell条件判断价格达到10点盈利阈值,结合PositionSize = -50精准卖出一半仓位,替代原ApplyStop的全仓止盈逻辑。 - 保本止损切换:半仓卖出触发后,将剩余仓位的止损价从初始的「买入价-10点」调整为买入价本身,确保剩余持仓不会产生亏损。
- 止盈目标上调:直接将最终止盈价设置为「买入价+30点」,覆盖原20点止盈目标,该规则会持续作用于剩余仓位直到触发止盈或止损。
- 模式切换:将
ApplyStop的mode从stopModePoint改为stopModePrice,避免点数计算时的价格波动误差,直接基于固定价格触发止损/止盈。
内容的提问来源于stack exchange,提问作者user3848207
相关产品推荐
相关产品推荐

