Amibroker 6.28回测:如何修改代码实现分批建仓(Scale in)?
实现分批建仓(Scale In)与全仓卖出的Amibroker解决方案
嘿,我来帮你搞定这个分批建仓的需求!你的Amibroker 6.28版本完全支持这个逻辑,下面是修改后的代码和详细说明:
// 保留你原有的买卖信号逻辑 Buy = BuySignal(); Sell = SellSignal(); // 定义每次买入的资金上限:取1000美元 和 当前账户权益10% 中的较小值 buyAmount = Min(1000, Equity * 0.1); // 控制仓位大小 if (Buy) { // 将买入金额转换为账户权益的百分比(Amibroker的PositionSize默认按百分比计算) PositionSize = (buyAmount / Equity) * 100; } else if (Sell) { // 触发卖出信号时,卖出全部持仓(-100表示清仓100%仓位) PositionSize = -100; } else { // 无信号时保持现有仓位 PositionSize = 0; } // 可选:根据你的需求设置滑点、佣金等参数 // SetTradeDelays(0, 0, 0, 0); // 设置交易延迟 // SetCommission(0.1, perTrade=True); // 设置每笔交易佣金0.1美元
关键逻辑说明:
- 分批买入控制:
buyAmount = Min(1000, Equity * 0.1)这行代码实现了你的核心需求——每次买入要么不超过1000美元,要么不超过当前资金的10%,取两者中更保守的那个数值。你可以根据需要调整这两个参数(比如把1000改成其他固定金额,0.1改成其他比例)。 - 仓位百分比转换:Amibroker的
PositionSize默认以账户权益的百分比为单位,所以我们需要把固定买入金额转换成百分比,这样系统就能准确计算每次该买多少份额。 - 全仓卖出:当
SellSignal()触发时,设置PositionSize = -100会直接卖出当前所有持仓,不管之前分批建了多少仓位,一次性清仓。
回测设置注意事项:
确保你在Amibroker的回测设置中,把Position Sizing Mode设置为「Fixed % of equity」(路径:Settings → Portfolio → Position Sizing),这样代码中的PositionSize百分比设置才能正常生效。
如果你的BuySignal()会连续触发(比如连续多个交易日发出买入信号),这段代码会每次执行分批买入,直到信号停止或者你达到仓位上限,完全符合你的分批建仓需求。
内容的提问来源于stack exchange,提问作者user3848207
相关产品推荐
相关产品推荐

