基于 CExpert 的多空单边 EA - MetaTrader 5EA
- 显示:
- 1995
- 等级:
- 已发布:
- 2016.12.22 11:25
- 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
智能交易系统基于扩展的 CExpert 类, 只允许选择多/空单边 (或双边) 交易。
提供两个不同的文件:
- LongShortExpertModified.mqh: 这个类扩展自省缺的 CExpert, 改编了 CheckOpen() 和 CheckReverse() 方法以便只允许所需订单开仓;
- LongShortExpertMACD.mq5: 该 EA 在嵌入的 ExpertMACD.mq5 类的基础上简单修改, 包括已开发的改编版智能系统, 以便根据输入参数只允许期望的订单类型, 并且澄清智能系统的使用。
LongShortExpertModified
这个类修改了省缺 CExpert 类的行为, 只允许以下某种枚举类型的订单:
enum ENUM_AVAILABLE_POSITIONS
{
LONG_POSITION,
SHORT_POSITION,
BOTH_POSITION
};
此枚举将用作所需最终 EA 的输入参数, 以确定允许哪种类型的订单, 并且仅在允许双边交易类型 (BOTH_POSITION 枚举值) 时, 才会在内部为所需订单开仓并处理订单反转。
为此, 重写了 CheckOpen() 和 CheckReverse() 方法:
class CLongShortExpertModified : public CExpert { protected: ENUM_AVAILABLE_POSITIONS m_positions; public: CLongShortExpertModified(void); ~CLongShortExpertModified(void); virtual bool CheckOpen(void); virtual bool CheckReverse(void); void SetAvailablePositions(ENUM_AVAILABLE_POSITIONS newValue){m_positions=newValue;}; };
改编的 CheckOpen() 根据 m_positions 值检查多头或空头仓位:
bool CLongShortExpertModified :: CheckOpen() { switch(m_positions) { case LONG_POSITION: return CheckOpenLong(); //仅检查新的多头仓位 case SHORT_POSITION: return CheckOpenShort(); //仅检查新的空头仓位 default: return CExpert::CheckOpen(); //省缺行为 } }
改编的 CheckReverse() 在双边类型允许时检查仓位反转:
bool CLongShortExpertModified::CheckReverse() { switch(m_positions) { case LONG_POSITION: case SHORT_POSITION: return false; // 不允许反转 default: return CExpert::CheckReverse(); //省缺行为 } }
LongShortExpertMACD
这个类提供了一个之前类的特殊使用 EA 示例, 基于 MQL5 发行版包含的省缺 ExpertMACD。
首先, 必须包括具体的 Expert 类, 并添加相应的输入参数。另外, 用外部智能系统替代省缺的智能系统与子类关联:
#include <Expert\LongShortExpertModified.mqh> //[...] input ENUM_AVAILABLE_POSITIONS Inp_Allowed_Positions=BOTH_POSITION; //空头 / 多头 / 双边仓位允许 //[...] CLongShortExpertModified ExtExpert; //特别设计的 CExpert 子类
智能系统初始化后, 必须根据输入值设置参数:
if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- 失败 printf(__FUNCTION__+": 智能系统初始化失败"); ExtExpert.Deinit(); return(-1); } // 控制允许哪些仓位的特定参数 ExtExpert.SetAvailablePositions(Inp_Allowed_Positions);
不需要进行其它修改。下图显示了智能系统的配置参数:
由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/1896
CoensioTrader1V06
多货币交易系统, 基于布林带和趋势捕捉技术。交易能力可同时高达 6 种货币。已构建的系统中使用了分享的优化参数。
FxTrend 25EMAFxTrend 25EMA 基于两条周期为 25 的 EMA 在不同时刻的差值。