量化软件下载:在赫兹量化中探索标准库的交易策略类

文章讲述了如何在MQL5环境中自定义EA交易策略,通过向导生成的代码添加和修改过滤器,如SignalRSI和SignalMA,并介绍如何创建基于CCI的自定义过滤器SignalCCIxx,以实现更复杂的交易逻辑。通过这种方式,用户可以利用标准指标和向导生成的模板,创建功能完善的自动交易系统,适用于交易锦标赛或其他策略需求。
摘要由CSDN通过智能技术生成

首先要注意的是,#include 文件通过向导添加至生成的代码。我们可以看到:

  • Expert.mqh

  • SignalRSI.mq

  • SignalMA.mqh

然后是代码的下述部分:

 
 

//--- Creating filter CSignalRSI CSignalRSI *filter0=new CSignalRSI; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert.Deinit(); return(-3); } signal.AddFilter(filter0);

正如标题所示,“过滤器”将被应用至附加到图表或在策略测试程序中测试的生成 EA 的市场情形。而 filter0 是索引为 0 的第一个过滤器,对于此过滤器,我们在示例中选择 RSI。

CSignalRSI 表示类信号 RSI。此类用于调用 RSI 指标,并向其应用一些条件以通过使用向导的模式逻辑创建买入或卖出信号。RSI 是我们的第一个过滤器(过滤器编号 0)。

在代码接下来的部分中,有一些过滤器参数,然后是追踪止损部分(我们已选择无追踪),再往后是有关资金管理的代码部分。

接下来是:

 
 

//--- Tuning of all necessary indicators if(!ExtExpert.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert.Deinit(); return(-10); } //--- ok return(0); }

此部分属于 Expert.mqh 包含文件。这是关于“EA 交易”操作所需指标的初始化。

生成的 EA 代码的最后一部分是关于取消初始化和其他常见“EA 交易”事件:

 
 

//+------------------------------------------------------------------+ //| Deinitialization function of the expert | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ExtExpert.Deinit(); } //+------------------------------------------------------------------+ //| "Tick" event handler function | //+------------------------------------------------------------------+ void OnTick() { ExtExpert.OnTick(); } //+------------------------------------------------------------------+ //| "Trade" event handler function | //+------------------------------------------------------------------+ void OnTrade() { ExtExpert.OnTrade(); } //+------------------------------------------------------------------+ //| "Timer" event handler function | //+------------------------------------------------------------------+ void OnTimer() { ExtExpert.OnTimer(); } //+------------------------------------------------------------------+

实际上,此 EA 使用了两个指标(RSI 和 MA),通过利用“过滤器”和“权重”逻辑的交易类的标准库用于交易决策。您可以在“MQL5 参考”的交易信号模块部分找到更多相关信息。但我们的目的是将我们自己的交易策略用作新的过滤器。

因此,针对第一步(使用我们自己的交易策略),我们要对 MyExpert.mq5 稍事修改。首先,我们添加另一个过滤器。它将是 filter2,并且我们要将它放置在紧接着 filter1 代码部分的后面。

 
 

//--- Creating filter CSignalCCIxx CSignalCCIxx *filter2=new CSignalCCIxx; if(filter2==NULL) { //--- failed printf(__FUNCTION__+": error creating filter2"); ExtExpert.Deinit(); return(-4); } signal.AddFilter(filter2); //--- Set filter parameters filter2.PeriodCCIxx(Signal_CCIxx_PeriodCCI); filter2.Applied(Signal_CCIxx_Applied); filter2.Weight(Signal_CCIxx_Weight);

让我们回到作为过滤器和市场决策核心的 #include 文件。第一个是 #include <Expert\Expert.mqh> 文件。此包含文件反过来包含其他文件:

  • #include "ExpertBase.mqh"

  • #include "ExpertTrade.mqh"

  • #include "ExpertSignal.mqh"

  • #include "ExpertMoney.mqh"

  • #include "ExpertTrailing.mqh"

这些包含文件分别是 EA、交易结构、信号、资金和追踪止损处理的主要结构。我们不打算深入分析这些文件或是对它们进行改动。我们的目的主要是通过使用来自 赫兹量化 标准指标组的现有指标添加我们自己的策略以及添加它们的包含文件。

在 MyExpert.mq5 代码中,我们有在本例中用作交易的市场决策的信号/过滤器的 RSI 和 MA 指标的 #include 文件。此时,让我们添加我们自己的自定义包含文件。为此,我们将使用属于 CCI 指标的修改(“改善”)版信号。

 
 

//+------------------------------------------------------------------+ //| Include | //+------------------------------------------------------------------+ #include <Expert\Expert.mqh> //--- available signals #include <Expert\Signal\SignalRSI.mqh> #include <Expert\Signal\SignalMA.mqh> #include <Expert\Signal\SignalCCIxx.mqh> // This is our own 'custom' indicator for custom Signal management of the EA

SignalCCIxx.mqh 文件应位于 \MQL5\Include\Expert\Signal\ 文件夹中,并且与向导生成 EA 的可集成性相一致,就像标准库的其他 #include 交易类一样 - 信号文件已经在此文件夹中(SignalRSI.mqh 和 SignalMA.mqh)。

对于此示例,我们将复制原始 CCI 文件,创建另一个名为 CCIxx 的文件并对代码稍事修改,然后将其用作 #include 文件。现在,为简单起见,我们只是使用标准库的 CCI 指标的复制版。

我们需要做的就是将 "\MQL5\Include\Expert\Signal\SignalCCI.mqh" 文件复制到 "\MQL5\Include\Expert\Signal\SignalCCIxx.mqh" 文件。这样做最简单的方法是在文件夹中制作文件的一个副本,然后重新命名它。

我们现在来看一看这个文件。在向导生成的 MyExpert.mq5 中整合此“自定义”方式即是已完成的文件。如上文所述,我们添加了 filter2 代码,现在我们将完成后续部分。因此我们将不再关注 MyExpert.mq5 文件,而是从现在开始关注 SignalCCIxx.mqh 文件 - 由于其 CCI 指标的 filter2 交易信号,它是 EA 的真正核心部分。

自定义策略

我们返回去添加我们称之为 CCIxx 的“半自定义”策略过滤器,它是 SignalCCI.mqh 的修改版。我将其定义为半自定义,因为事实上它不是一个全新的自定义信号,相反,它是来自随 赫兹量化 一起提供的标准指标组的 CCI 指标的重新设计版本。这样,即便是缺乏经验的用户和编程人员也能够使用大量的现有指标对 MQL5 向导生成的 EA 的模式和过滤器稍事修改。换句话说,您可以创建自己的过滤器和模式版本,用于生成买入和卖出市场信号。这仍然是使用策略的绝佳基础。

我们来看一看这个示例。这对于那些仅仅需要这个功能(将一些自定义模式添加至现有指标)的用户以及那些希望仅仅通过使用向导来快速创建具有某种自定义的功能完善(且有效)的 EA 参加自动交易锦标赛的用户而言十分有用。

这可以通过 1 小时的工作实现 - 创建一个“锦标赛友好”EA,它功能完善,具有追踪止损、资金管理以及竞争性交易所需的一切。再次将重心移至 EA 由向导生成的事实,正如我将其命名为“锦标赛友好”,这实际上意味着生成的代码没有错误,因此参赛者无需作出任何修改或担心出现漏洞或错误。

EA 将只是交易并且是完美地交易,至少对于那些希望参赛但不会编程也不想在工作服务(对于锦标赛参赛者而言是个不错的选择)中订购 EA 的参赛者而言是如此。有大量的输入参数可供指定,以使您的自动交易尽可能贴近于您脑海中的策略构思。

但实际上,您可以仅仅使用标准指标组以及 MetaQuotes 经由向导和交易策略类的标准库提供的标准过滤器/模式组。由于指标具有很多参数(时间框架、交易品种)以及指标自身的参数(例如,周期、应用的价格等),这就提供了大量的组合和成功交易的可能性。通过本文您将快速、轻松地学会如何为 赫兹量化 标准指标自定义和添加模式/过滤器。

我们继续来看 SignalCCIxx.mqh 文件,以自定义和修改其行为,制作我们自己的 CCI 信号交易模型 (CCIxx)。首先,让我们在 MyExpert.mq5 文件中为输入部分中的新代码添加新的变量,如下例所示(请参见高亮显示的代码):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值