You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 11:33:37