EA策略:MACD金叉/死叉策略,可配置参数,自动补仓和锁仓
EA策略:MACD金叉/死叉策略,可配置参数,自动补仓和锁仓
此EA策略使用MACD金叉/死叉信号进行交易,并自动执行补仓和锁仓操作,可通过参数自定义魔术码、初始手数、补仓倍数、补仓次数、多空总盈利和锁仓手数等参数,方便用户根据市场情况进行灵活调整。
策略逻辑
1. 多头策略
- 检查当前魔术码下的多单持仓是否为0,如果是,则MACD金叉的时候做多,初始手数可设定为参数'initialLots',每上涨100微点,以第一个多单持仓订单的补仓倍数(参数'addLotsMultiplier')进行补仓,补仓次数为参数'addLotsTimes';
- 多单持仓时,检查当前魔术码下的空单持仓是否为0,如果是,并且当前最新价格低于第一个多单订单100微点间距,则以锁仓手数(参数'lockLots')进行锁仓;
- 锁仓后,以第一个锁仓空单为基础,每下跌100微点间距,以持仓第一个空单订单手数的补仓倍数进行补仓做空,补仓次数为参数'addLotsTimes';
- 多空总盈利达到参数'totalProfitUSD'(美元)时全部平仓。
2. 空头策略
- 检查当前魔术码下的空单持仓是否为0,如果是,则MACD死叉的时候做空,初始手数可设定为参数'initialLots',每下跌100微点,以第一个空单持仓订单的补仓倍数进行补仓,补仓次数为参数'addLotsTimes';
- 空单持仓时,检查当前魔术码下的多单持仓是否为0,如果是,并且当前最新价格高于第一个空单订单100微点间距,则以锁仓手数进行锁仓;
- 锁仓后,以第一个锁仓多单为基础,每上涨100微点间距,以持仓第一个多单订单手数的补仓倍数进行补仓做多,补仓次数为参数'addLotsTimes';
- 多空总盈利达到参数'totalProfitUSD'(美元)时全部平仓。
代码示例
// 在原有代码的基础上添加以下参数
extern int magicNumber = 92133; // 魔术码
extern double initialLots = 0.5; // 初始手数
extern double addLotsMultiplier = 0.6; // 补仓倍数
extern int addLotsTimes = 5; // 补仓次数
extern double totalProfitUSD = 40.0; // 多空总盈利(美元)
extern double lockLots = 0.5; // 锁仓手数
// 在OnTick函数中进行修改
void OnTick()
{
// 其他代码...
// 检查当前魔术码下的多单持仓是否为0
if (duodanshu() == 0)
{
if (buy)
{
// MACD金叉的时候做多
// 其他代码...
if (isFirstBuyOrder)
{
// 初始手数0.5
res5 = OrderSend(Symbol(), OP_BUY, initialLots, Ask, 30, stp_b, stk_b, "1", magicNumber, 0, Red);
// 其他代码...
}
else
{
// 每上涨100微点,以第一个多单持仓订单的补仓倍数进行补仓,补仓次数为5次
// 其他代码...
}
}
else if (sell && currentPrice < (firstBuyOrderPrice - 100 * Point))
{
// 以锁仓手数进行锁仓
res5 = OrderSend(Symbol(), OP_SELL, lockLots, Bid, 30, stp_s, stk_s, "1", magicNumber, 0, Lime);
// 其他代码...
}
}
// 其他代码...
// 平仓逻辑
if (duoyingkui() + kongyingkui() >= totalProfitUSD)
{
close_allx(0); // 平仓所有订单
}
}
请注意,以上代码只是一个示例,实际使用时可能需要根据您的需求进行进一步的修改和完善。
注意:
- 在代码中添加可更改的参数,使EA策略更加灵活可定制。
- 注意对OrderSelect’ 返回的值进行检查,确保代码的稳定性和可靠性。
- 建议在模拟账户上测试策略,并根据测试结果进行调整,以确保策略的有效性和安全性。
此策略仅供参考,不保证任何收益,请谨慎使用。
原文地址: https://www.cveoy.top/t/topic/b5DF 著作权归作者所有。请勿转载和采集!