请观看如何免费下载自动交易
请在Twitter上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
EA

基于 CExpert 的多空单边 EA - MetaTrader 5EA

显示:
1995
等级:
(30)
已发布:
2016.12.22 11:25
\MQL5\Include\Expert\
需要基于此代码的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

Mercado Aberto Mercado Aberto

简单的显示市场开市时间的指标。

Mutex - WinAPI Mutex - WinAPI

同步 ОС/EA/MT 过程等等。现在不需要任何自制的 DLL。

CoensioTrader1V06 CoensioTrader1V06

多货币交易系统, 基于布林带和趋势捕捉技术。交易能力可同时高达 6 种货币。已构建的系统中使用了分享的优化参数。

FxTrend 25EMA FxTrend 25EMA

FxTrend 25EMA 基于两条周期为 25 的 EMA 在不同时刻的差值。