基于 CExpert 的仅多空 EA - MetaTrader 5 专家

当前的 EA 交易允许根据交易期限的延长选择仅开立多头/空头(或两者)头寸。C专家班级。
提供了两个不同的文件:
LongShortExpert修改
此类修改了默认的 CExpert 类行为,仅允许根据以下枚举指定某种类型的订单:
枚举ENUM_AVAILABLE_POSITIONS
{
多头位置,
空头位置,
BOTH_POSITION
};
该枚举将用作所需最终 EA 的输入参数,以确定允许哪种类型的订单,并在内部用于仅打开所需订单并仅在允许两种持仓类型(BOTH_POSITION 枚举值)时处理订单反转。
为此,重写了 CheckOpen() 和 CheckReverse() 方法:
班级CLongShortExpert修改:民众C专家 {受保护的: ENUM_AVAILABLE_POSITIONS m_positions;民众: CLongShortExpert修改(空白); ~CLongShortExpertModified(空白); 虚拟的 布尔值 检查打开(空白); 虚拟的 布尔值 检查反向(空白); 空白SetAvailablePositions(ENUM_AVAILABLE_POSITIONS newValue){m_positions=newValue;}; };
CheckOpen() 被修改为仅根据 m_positions 值检查多头或空头头寸:
布尔值CLongShortExpertModified::CheckOpen() { 转变(m_位置) { 案件多头位置: 返回检查OpenLong(); //仅检查新的多头头寸 案件SHORT_POSITION: 返回检查OpenShort(); //仅检查新的空头头寸 默认: 返回CExpert::CheckOpen(); //默认行为 } }
CheckReverse() 被修改为仅在允许两种持仓类型时检查持仓反转:
布尔值CLongShortExpertModified::CheckReverse() { 转变(m_位置) { 案件多头位置: 案件SHORT_POSITION: 返回 错误的; // 不允许反转 默认: 返回CExpert::CheckReverse();//默认行为 } }
多空专家MACD
此类提供了上一类使用的特定 EA 示例,基于 MQL5 发行版中包含的默认 ExpertMACD EA。
首先,必须包含具体的 Expert 类,并添加相应的输入参数。此外,外部 Expert 与子类关联,而不是默认的 CExpert:
#包括<专家\LongShortExpertModified.mqh>//[...] 输入ENUM_AVAILABLE_POSITIONS Inp_Allowed_Positions=BOTH_POSITION;//空头/多头/两种仓位都允许 //[...]CLongShortExpert修改的ExtExpert; //具体设计的CExpert子类
初始化 EA 后,必须根据输入值设置参数:
如果(!ExtExpert.Init(象征(),时期(),Expert_EveryTick,Expert_MagicNumber)) { // - - 失败的 打印函数(__功能__+“:初始化专家时出错”); ExtExpert.Deinit(); 返回(-1); } // 控制允许哪些位置的特定参数 ExtExpert.SetAvailablePositions(Inp_Allowed_Positions);
不需要进行额外的更改。下图显示了 Expert 的配置参数:

附件下载
📎 longshortexpertmodified.mqh (3.25 KB)
📎 longshortexpertmacd.mq5 (6.51 KB)
Source: MQL5 #1896
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录
