下载MetaTrader 5

过滤的魔力

8 四月 2016, 14:29
Sergey Pavlov
0
782

简介

大部分自动交易系统(ATS)的开发人员或多或少都会使用某种形式的信号滤波。 尽管这并非提高系统特性的唯一途径,但却被认为是最有效的。 新手“圣杯建造者”经常对滤波器的魔力推崇备至。 采取一些交易策略很简单,往上放一打滤波器,一个盈利的 Expert Advisor 便出现了。

但是,使用滤波器也有反对声音。 滤波器大幅降低(有时可达 2-3 倍)交易次数,而且无法保证滤波器在未来会和过去一样有效。 诚然,还有一些其他令人信服的原因。

因此,让我们一步步地深入探究这些因素。



滤波器无意义的假说

如果 Expert Advisor 不盈利的话(“消磨机”),那么某种类型的滤波可能毫无帮助,- 滤波在此失去魔力了。

因此,我们不会在本文中讨论此类 Expert Advisor。 尽管如此,我们必须了解,有关于量子频率滤波器的研究有能力将任何近乎“消磨机”的 Expert Advisor 转变为 伪圣杯



滤波器危险的假说

如果 Expert Advisor 的特性接近理想的自动交易系统,那么滤波只会进一步恶化。

我们应明确理想的自动交易系统的含义。 它指的是仅生成盈利交易,即不带来亏损的交易策略。 在这个系统内,不盈利交易的数量 = 0。



什么是滤波器?

最简单的交易信号滤波器,是一种逻辑限制,比如:如果 A 大于等于 B A> = B),则跳过该信号,如果 A 小于 B (A <B) - 则不跳过该信号。因此信号的一部分将去除。 滤波术语是由交易机器人开发人员所确定。 为建立趋势的部分类型,我们需要分析多种因素对 ATS 特性的影响。 而这种因素又是多种多样的。 因此,我们必须凭借直觉,来选择最有关联和最一致的因素。

示例。ATS 交易结果和 Kukushkino 村落的大气压力之间可能有关联,即你可以创建合适的滤波器并提高 Expert Advisor 的可获利性,它会把这个俄国小镇的天气因素考虑在内。 但是,有人可能不会赞同使用这种创新方法来滤波,尽管这种方法确实提高了系统的可获利性。



滤波器分类

尽管有多种用于 ATS 的滤波器,他们仍可以分为两个主要类别:

  • 带通滤波器(P-滤波器) - 传输信号频带;
  • 离散滤波器(D-滤波器) - 通过掩码(模板)选择性传输信号。


从哪里开始?

让我们先通过一个示例来讨论滤波器机制。让我们使用 DC2008_revers Expert Advisor (参见附带文件),它专为本文开发,然后探索其特性(在不使用任何滤波器的情况下)。 这是测试期间获得的报告。

报告

交易品种: EURUSD (欧元 vs 美元)
时段 1 分钟 (M1) 2009.09.07 00:00 - 2010.01.26 23:59 (2009.09.07 - 2010.01.27)
模型 所有价格变动(最准确的方式基于所有可用性最低的时间范围)
参数 Lots = 0.1; Symb.magic = 9001; nORD.Buy = 5; nORD.Sell = 5;

历史记录中的柱体 133967 已建模的价格变动 900848 建模质量 25.00%
不匹配的流量错误 0




初始保证金 10000.00



净利润 4408.91 毛利润 32827.16 毛亏损 -28418.25
获利性 1.16 预计获利 1.34

绝对亏损 273.17 最大亏损 3001.74 (20.36%) 相对亏损 20.36% (3001.74)

总成交量 3284 空头仓位(获利%) 1699 (64.98%) 多头仓位(获利%) 1585 (65.68%)

盈利交易(总交易次数百分比) 2145 (65.32%) 亏损交易(总交易次数的百分比) 1139 (34.68%)
最大 可获利交易 82.00 亏损交易 -211.00
平均 可获利交易 15.30 亏损交易 -24.95
最大次数 连续获利(盈利) 29 (679.00) 连续亏损(亏损) 16 (-290.34)
最大 连续收益(盈利次数) 679.00 (29) 连续亏损(亏损次数) -1011.00 (10)
平均 连续盈利 5 连续亏损 3

1. 历史记录回测结果。 初始 Expert Advisor 不含滤波器

结果分析:

  1. Expert Advisor 是可盈利的,而且获利交易占比超过 60% - 这很不错。
  2. 最大 20% 的保证金亏损和超过 3000 美元的亏损(手数最低) - 这很糟糕。
  3. 总成交量足以使用滤波(> 3000)。

当然,这些结论仅与当前提供的历史记录时期有关。 我们不知道 Expert Advisor 在不同位置的交易会如何。 但是,这不会影响我们使用滤波对其特性进行调整。

因此,对此 Expert Advisor,我们可以尝试找到可以提高其可获利性并减少亏损的滤波器。



带通滤波器(P-滤波器)

这是一款最常用的简单滤波器,因为可以在测试结束后立即评估结果,而不用额外进行处理。 考虑可能的选项,在已测试的 Expert Advisor 内使用滤波器。 作为一个参数,让我们使用跳过频带,然后比较不同时段内的开盘价和收盘价。

H4 时段

   //+---------------------------------------------------------------------------------+
   //   BUY Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && High[0]<iLow(NULL,PERIOD_H1,1)
      && ORD.Buy<nORD.Buy
   //.........................................Filters...................................
      && iOpen(NULL,PERIOD_H4,1)<iClose(NULL,PERIOD_H4,1)
      )                                                                                
   {
   //----
      Signal.Buy=true; 
   }
   //+---------------------------------------------------------------------------------+
   //   SELL Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && Low[0]>iHigh(NULL,PERIOD_H1,1)
      && ORD.Sell<nORD.Sell
   //.........................................Filters...................................
      && iOpen(NULL,PERIOD_H4,1)>iClose(NULL,PERIOD_H4,1)
      )                                                                                
   {
   //----
      Signal.Sell=true; 
   }

2. 历史记录回测结果。 Expert Advisor 含 P- 滤波器 (H4 时段)

H1 时段

   //+---------------------------------------------------------------------------------+
   //   BUY Signal
   //+---------------------------------------------------------------------------------+
   if(true
      && High[0]<iLow(NULL,PERIOD_H1,1)
      && ORD.Buy<nORD.Buy
   //.........................................Filters...................................
      && iOpen(NULL,PERIOD_H1,1)>iClose(NULL,PERIOD_H1,1)
      )                                                                                
   {
   //----
      Signal.Buy=true; 
   }
   //+---------------------------------------------------------------------------------+
   //   SELL Signal
   //+---------------------------------------------------------------------------------+
   if(true
      && Low[0]>iHigh(NULL,PERIOD_H1,1)
      && ORD.Sell<nORD.Sell
   //.........................................Filters...................................
      && iOpen(NULL,PERIOD_H1,1)<iClose(NULL,PERIOD_H1,1)
      )                                                                                
   {
   //----
      Signal.Sell=true; 
   }

图 3. 历史记录回测结果。 Expert Advisor含 P- 滤波器 (H1 时段)

M30 时段

   //+---------------------------------------------------------------------------------+
   //  BUY Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && High[0]<iLow(NULL,PERIOD_H1,1)
      && ORD.Buy<nORD.Buy
   //.........................................Filters...................................
      && iOpen(NULL,PERIOD_M30,1)<iClose(NULL,PERIOD_M30,1)
      )                                                                                
   {
   //----
      Signal.Buy=true; 
   }
   //+---------------------------------------------------------------------------------+
   //   SELL Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && Low[0]>iHigh(NULL,PERIOD_H1,1)
      && ORD.Sell<nORD.Sell
   //.........................................Filters...................................
      && iOpen(NULL,PERIOD_M30,1)>iClose(NULL,PERIOD_M30,1)
      )                                                                                
   {
   //----
      Signal.Sell=true; 
   }

图 4. 历史记录回测结果。 Expert Advisor含 P- 滤波器 (M30 时段)

M5 时段

   //+---------------------------------------------------------------------------------+
   //   BUY Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && High[0]<iLow(NULL,PERIOD_H1,1)
      && ORD.Buy<nORD.Buy
   //.........................................Filters...................................
      && iOpen(NULL,PERIOD_M5,1)<iClose(NULL,PERIOD_M5,1)
      )                                                                                
   {
   //----
      Signal.Buy=true; 
   }
   //+---------------------------------------------------------------------------------+
   //   SELL Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && Low[0]>iHigh(NULL,PERIOD_H1,1)
      && ORD.Sell<nORD.Sell
   //.........................................Filters...................................
      && iOpen(NULL,PERIOD_M5,1)>iClose(NULL,PERIOD_M5,1)
      )                                                                                
   {
   //----
      Signal.Sell=true; 
   }

5 余额变更安排。M5 时段的 P-滤波器

为简化收到报告的分析,这些报告总结到以下表中。


无滤波 PERIOD_H4 PERIOD_H1 PERIOD_M30 PERIOD_M5
初始保证金 10000.00 10000.00 10000.00 10000.00 10000.00
净利润 4408.91 4036.33 4829.05 3852.90 4104.30
毛利润 32827.16 19138.74 27676.50 18133.77 23717.68
毛亏损 -28418.25 -15102.41 -22847.45 -14280.87 -19613.38
获利性 1.16 1.27 1.21 1.27 1.21
预计获利 1.34 2.92 2.20 3.59 2.02
绝对亏损 273.17 434.09 762.39 64.00 696.23
最大亏损 3001.74 (20.36%) 2162.61 (17.48%) 2707.56 (17.22%) 2121.78 (16.38%) 1608.30 (12.46%)
相对亏损 20.36% (3001.74) 17.48% (2162.61) 17.22% (2707.56) 16.38% (2121.78) 12.46% (1608.30)
总成交量 3284 1383 2195 1073 2035
空头仓位(获利%) 1699 (64.98%) 674 (54.01%) 1119 (60.59%) 547 (60.51%) 1046 (63.48%)
多头仓位(获利%) 1585 (65.68%) 709 (62.48%) 1076 (64.96%) 526 (64.64%) 989 (66.63%)
盈利交易(总交易次数的百分比) 2145 (65.32%) 807 (58.35%) 1377 (62.73%) 671 (62.53%) 1323 (65.01%)
亏损交易(总交易次数的百分比) 1139 (34.68%) 576 (41.65%) 818 (37.27%) 402 (37.47%) 712 (34.99%)
最大




可获利交易 82.00 201.00 157.00 204.00 97.00
亏损交易 -211.00 -136.00 -160.00 -179.51 -156.00
平均




可获利交易 15.30 23.72 20.10 27.02 17.93
亏损交易 -24.95 -26.22 -27.93 -35.52 -27.55
最大次数




连续获利(盈利) 29 (679.00) 27 (817.98) 36 (1184.32) 36 (1637.38) 44 (912.03)
连续亏损(亏损) 16 (-290.34) 12 (-636.34) 13 (-367.07) 14 (-371.51) 15 (-498.51)
最大




连续收益(盈利次数) 679.00 (29) 884.08 (16) 1184.32 (36) 1637.38 (36) 912.03 (44)
连续亏损(亏损次数) -1011.00 (10) -686.00 (10) -758.00 (7) -894.85 (10) -589.00 (5)
平均




连续盈利 5 5 5 5 4
连续亏损 3 3 3 3 2


表 1 P-滤波器测试报告的对比表

结果分析:

  1. 仅有 P-滤波器”PERIOD_H1”的净收益上升 (4408.91 => 4829.05)。
  2. 期望收益排第一的是P-滤波器”PERIOD_M30” (1.34 => 3.59)。
  3. 所有滤波器的最大亏损均下降。 最低亏损值出现在”PERIOD_M5”滤波器中 (3001.74 => 1608.30)。
  4. 滤波将总成交量降低了 1.5 -3 倍。

结论

  • P-滤波器可以提高 ATS 特性。
  • 进一步分析,我们将选择 P-滤波器”PERIOD_H1”,该滤波器获得利润最多。


离散滤波器(D-滤波器)

最简单也是最易于理解的离散滤波器是按时间交易。 合理地假设当日内,Expert Advisor 交易系统的交易不稳定。 在特定时段内,系统盈利更好,而在其他时段内则刚好相反,只会亏损。 为此,让我们来研究这种滤波器对交易结果的影响。 必须将额外的外部变量提前加入到 expert 代码内:

extern int        Filter.Hour=0;    // D-filter: trade by hour
//----
extern double     Lots=0.1;
extern int        Symb.magic=9001,
                  nORD.Buy = 5,     // max buy orders
                  nORD.Sell = 5;    // max sell orders

滤波器本身:

   //+---------------------------------------------------------------------------------+
   //   BUY Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && High[0]<iLow(NULL,PERIOD_H1,1)
      && ORD.Buy<nORD.Buy
   //.........................................Filters...................................
      && Hour()==Filter.Hour 
      )                                                                                
   {
   //----
      Signal.Buy=true; 
   }
   //+---------------------------------------------------------------------------------+
   //   SELL Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && Low[0]>iHigh(NULL,PERIOD_H1,1)
      && ORD.Sell<nORD.Sell
   //.........................................Filters...................................
      && Hour()==Filter.Hour 
      )                                                                                
   {
   //----
      Signal.Sell=true; 
   }

所以,如果当前时段和 D 滤波器的离散值相吻合,则我们生成(允许)买入或卖出信号,否则 - 我们不生成信号。

我们在优化模式下启动测试程序(输入参数在图中显示)。 保证金必须指定为最大额度,以避免出现“缺乏资金建仓”的情况,以及避免损失成交数。




图 6 输入参数以搜索 D 滤波器特性

因此,我们获取了滤波器反馈特性:利润、成交数量和亏损(Y 轴),作为当日(X 轴)某个时段内的函数。

7. 滤波器反馈特性。 按时间的 D 滤波

因此我们假设 Expert Advisor 在不同时间可带来不同利润得到印证。

... 在这个假设得到验证后,现在我们应该如何处置它呢? 首先想到的是禁止 Expert Advisor 在只会带来亏损的时段内进行交易。 这看似很有逻辑。那么,我们将改变 D 滤波器,仅允许其在盈利时段内交易。 换言之 - 我们将创建一个滤波器掩码。 现在我们可以将完成的 D 滤波器插入代码中,然后查看测试报告。

   //+---------------------------------------------------------------------------------+
   //   BUY Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && High[0]<iLow(NULL,PERIOD_H1,1)
      && ORD.Buy<nORD.Buy
   //.........................................Filters...................................
      && (Hour()==0                       
         || Hour()==6                     
         || Hour()==9                     
         || Hour()==10 
         || Hour()==11 
         || Hour()==12 
         || Hour()==18 
         || Hour()==20 
         || Hour()==22 
         || Hour()==23
         ) 
      )                                                                                
   {
   //----
      Signal.Buy=true; 
   }
   //+---------------------------------------------------------------------------------+
   //   SELL Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && Low[0]>iHigh(NULL,PERIOD_H1,1)
      && ORD.Sell<nORD.Sell
   //.........................................Filters...................................
      && (Hour()==0 
         || Hour()==6 
         || Hour()==9 
         || Hour()==10 
         || Hour()==11 
         || Hour()==12 
         || Hour()==18 
         || Hour()==20 
         || Hour()==22 
         || Hour()==23
         ) 
      )                                                                               
   {
   //----
      Signal.Sell=true; 
   }   

交易品种: EURUSD (欧元 vs 美元)
时段 1 分钟 (M1) 2009.09.07 00:00 - 2010.01.26 23:59 (2009.09.07 - 2010.01.27)
模型 每次价格变动(最准确的方式基于所有可用性最低的时间范围)
参数 Filter.Hour = 0; Lots = 0.1; Symb.magic = 9001; nORD.Buy = 5; nORD.Sell = 5;

历史记录中的柱体 133967 已建模的价格变动 900848 建模质量 25.00%
不匹配的图形错误 0




初始保证金 10000.00



净利润 6567.66 毛利润 24285.30 毛亏损 -17717.64
获利性 1.37 预计获利 4.13

绝对亏损 711.86 最大亏损 3016.21 (18.22%) 相对亏损 18.22% (3016.21)

总成交量 1590 空头仓位(获利%) 832 (61.30%) 多头仓位(获利%) 758 (63.85%)

盈利交易(总交易次数的百分比) 994 (62.52%) 亏损交易(总交易次数的百分比) 596 (37.48%)
最大 可获利交易 194.00 亏损交易 -161.00
平均 可获利交易 24.43 亏损交易 -29.73
最大次数 连续获利(盈利) 40 (1096.16) 连续亏损(亏损) 15 (-336.45)
最大 连续收益(盈利次数) 1289.08 (20) 连续亏损(亏损次数) -786.51 (8)
平均 连续盈利 5 连续亏损 3

8. 余额图表。 按时间的 D 滤波器

滤波结果分析:

  1. 减少亏损 - 未达成。 不仅没有减少,反而略微上升了(3001.74 => 3016.21)!?
  2. 净收益增长约 50% (4408.91 => 6567.66)。 但成交量却下降了近 2 倍 (3284 => 1590)。
  3. D 滤波器的预期增益 (4.13) 高于所有已调查的 P 滤波器的最佳值 (3.59)。
  4. 获利交易量下降(64.98% => 62.52%),即,滤波器不仅消除了非获利交易,还有许多获利交易。

结论

  • 离散滤波较之 P 滤波更加有效,但需要更精确的调试和选择最佳的输入条件。


使用两种或以上滤波器进行信号滤波。

仅使用一种滤波器,并不总是能令 ATS 的性能得到显著提高。 更常见做法是用设置多个滤波器。 因此,我们将面对如何整和这些滤波器的问题。

出于本次研究目的,我们将采用以上滤波器,并为省事,将他们做以下标记:1 号滤波器(P 滤波器 ”PERIOD_H1”)和 2 号滤波器(D 滤波器)。 一开始我们将通过简单添加来进行整合。 为此,我们要更改 Expert Advisor 的代码。

   //+---------------------------------------------------------------------------------+
   //   BUY Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && High[0]<iLow(NULL,PERIOD_H1,1)
      && ORD.Buy<nORD.Buy
   //.........................................Filters...................................
      //---- filter №1
      && iOpen(NULL,PERIOD_H1,1)>iClose(NULL,PERIOD_H1,1)  
      //---- filter №2
      && (Hour()==0                                                         
         || Hour()==6                     
         || Hour()==9                     
         || Hour()==10 
         || Hour()==11 
         || Hour()==12 
         || Hour()==18 
         || Hour()==20 
         || Hour()==22 
         || Hour()==23
         )       
      )                                                                                
   {
   //----
      Signal.Buy=true; 
   }
   //+---------------------------------------------------------------------------------+
   //   SELL Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && Low[0]>iHigh(NULL,PERIOD_H1,1)
      && ORD.Sell<nORD.Sell
   //.........................................Filters...................................
      //---- filter №1
      && iOpen(NULL,PERIOD_H1,1)<iClose(NULL,PERIOD_H1,1)
      //---- filter №2
      && (Hour()==0                       
         || Hour()==6                     
         || Hour()==9                     
         || Hour()==10 
         || Hour()==11 
         || Hour()==12 
         || Hour()==18 
         || Hour()==20 
         || Hour()==22 
         || Hour()==23
         )       
      )                                                                               
   {
   //----
      Signal.Sell=true; 
   }

然后,我们测试已创建的滤波器组合并获得以下报告。

余额

交易品种: EURUSD (欧元 vs 美元)
时段 1 分钟 (M1) 2009.09.07 00:00 - 2010.01.26 23:59 (2009.09.07 - 2010.01.27)
模型 所有价格变动(最准确的方式基于所有可用性最低的时间范围)
参数 Lots = 0.1; Symb.magic = 9001; nORD.Buy = 5; nORD.Sell = 5;

历史记录中的柱体 133967 已建模的价格变动 900848 建模质量 25.00%
不匹配的图形错误 0




初始保证金 10000.00



净利润 6221.18 毛利润 20762.67 毛亏损 -14541.49
获利性 1.43 预计获利 5.47

绝对亏损 1095.86 最大亏损 3332.67 (20.13%) 相对亏损 20.13% (3332.67)

总成交量 1138 空头仓位(获利%) 584 (58.39%) 多头仓位(获利%) 554 (61.19%)

盈利交易(总交易次数的百分比) 680 (59.75%) 亏损交易(总交易次数的百分比) 458 (40.25%)
最大 获利交易 201.00 亏损交易 -159.00
平均 获利交易 30.53 亏损交易 -31.75
最大次数 连续获利(盈利) 28 (1240.15) 连续亏损(亏损) 16 (-600.17)
最大 连续收益(盈利次数) 1240.15 (28) 连续亏损(亏损次数) -883.85 (10)
平均 连续盈利 5 连续亏损 3

9. 余额变更图。两个滤波器: P 滤波器 + D 滤波器(简单添加)

但是,这两种滤波器可通过另一种方式连接。 假设 1 号滤波器的配置优于 2 号滤波器。 则我们需要建立一个全新的 D 滤波器。 Expert Advisor 代码将查看以下方式。 我们在优化模式下启动测试程序,并获得 2 号滤波器的特性(按时间交易)。

   //+---------------------------------------------------------------------------------+
   //   BUY Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && High[0]<iLow(NULL,PERIOD_H1,1)
      && ORD.Buy<nORD.Buy
   //.........................................Filters...................................
      //---- filter №1
      && iOpen(NULL,PERIOD_H1,1)>iClose(NULL,PERIOD_H1,1)  
      //---- filter №2
      && Hour()==Filter.Hour 
      )                                                                                
   {
   //----
      Signal.Buy=true; 
   }
   //+---------------------------------------------------------------------------------+
   //   SELL Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && Low[0]>iHigh(NULL,PERIOD_H1,1)
      && ORD.Sell<nORD.Sell
   //.........................................Filters...................................
      //---- filter №1
      && iOpen(NULL,PERIOD_H1,1)<iClose(NULL,PERIOD_H1,1)
      //---- filter №2
      && Hour()==Filter.Hour 
      )                                                                               
   {
   //----
      Signal.Sell=true; 
   }

10. 根据两种 D 滤波器的时间产生的利润变化。 对比分析

确实,滤波器的反馈特性已更改。 并且,考虑到我们通过添加 1 号 滤波器至 Expert Advisor,我们更改了其属性就不奇怪了。 最终,需要为 2 号滤波器更改掩码。

11. 2 号滤波器反馈特性。 按时间的 D 滤波(已优化)

Expert Advisor 代码的最终视图。

   //+---------------------------------------------------------------------------------+
   //   BUY Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && High[0]<iLow(NULL,PERIOD_H1,1)
      && ORD.Buy<nORD.Buy
   //.........................................Filters...................................
      //---- filter №1
      && iOpen(NULL,PERIOD_H1,1)>iClose(NULL,PERIOD_H1,1)  
      //---- filter №2
      && (Hour()==0                       
         || Hour()==1                     
         || Hour()==6                     
         || Hour()==7                     
         || Hour()==9                     
         || Hour()==10 
         || Hour()==12 
         || Hour()==14 
         || Hour()==15 
         || Hour()==18 
         || Hour()==20 
         || Hour()==22 
         || Hour()==23
         )      
      )                                                                                
   {
   //----
      Signal.Buy=true; 
   }
   //+---------------------------------------------------------------------------------+
   //   SELL Signals
   //+---------------------------------------------------------------------------------+
   if(true
      && Low[0]>iHigh(NULL,PERIOD_H1,1)
      && ORD.Sell<nORD.Sell
   //.........................................Filters...................................
      //---- filter №1
      && iOpen(NULL,PERIOD_H1,1)<iClose(NULL,PERIOD_H1,1)
      //---- filter №2
      && (Hour()==0                       
         || Hour()==1                     
         || Hour()==6                     
         || Hour()==7                     
         || Hour()==9                     
         || Hour()==10 
         || Hour()==12 
         || Hour()==14 
         || Hour()==15 
         || Hour()==18 
         || Hour()==20 
         || Hour()==22 
         || Hour()==23
         )      
      )                                                                                
   {
   //----
      Signal.Sell=true; 
   }

余额

交易品种: EURUSD (欧元 vs 美元)
时段 1 分钟 (M1) 2009.09.07 00:00 - 2010.01.26 23:59 (2009.09.07 - 2010.01.27)
模型 所有价格变动(最准确的方式基于所有可用性最低的时间范围)
参数 Lots = 0.1; Symb.magic = 9001; nORD.Buy = 5; nORD.Sell = 5;

历史记录中的柱体 133967 已建模的价格变动 900848 建模质量 25.00%
不匹配的图形错误 0




初始保证金 10000.00



净利润 5420.54 毛利润 22069.48 毛亏损 -16648.94
获利性 1.33 预计获利 3.77

绝对亏损 826.86 最大亏损 2141.24 (14.06%) 相对亏损 14.06% (2141.24)

总成交量 1439 空头仓位(获利%) 758 (61.87%) 多头仓位(获利%) 681 (64.46%)

盈利交易(总交易次数的百分比) 908 (63.10%) 亏损交易(总交易次数的百分比) 531 (36.90%)
最大 可获利交易 157.00 亏损交易 -154.00
平均 可获利交易 24.31 亏损交易 -31.35
最大缺陷数 连续获利(盈利) 30 (772.70) 连续亏损(亏损) 16 (-562.17)
最大 连续收益(盈利次数) 1091.32 (22) 连续亏损(亏损次数) -926.15 (15)
平均 连续盈利 5 连续亏损 3


12. 余额图形由于两个滤波器特性的优化而产生变化。

为更方便制作报告分析,我们创建了以下图表。


无滤波 添加 优化
初始保证金 10000.00 10000.00 10000.00
净利润 4408.91 6221.18 5420.54
毛利润 32827.16 20762.67 22069.48
毛亏损 -28418.25 -14541.49 -16648.94
获利性 1.16 1.43 1.33
预计获利 1.34 5.47 3.77
绝对亏损 273.17 1095.86 826.86
最大亏损 3001.74 (20.36%) 3332.67 (20.13%) 2141.24 (14.06%)
相对亏损 20.36% (3001.74) 20.13% (3332.67) 14.06% (2141.24)
总成交量 3284 1138 1439
空头仓位(获利%) 1699 (64.98%) 584 (58.39%) 758 (61.87%)
多头仓位(获利%) 1585 (65.68%) 554 (61.19%) 681 (64.46%)
盈利交易(总交易次数百分比) 2145 (65.32%) 680 (59.75%) 908 (63.10%)
亏损交易(总交易次数的百分比) 1139 (34.68%) 458 (40.25%) 531 (36.90%)
最大


可获利交易 82.00 201.00 157.00
亏损交易 -211.00 -159.00 -154.00
平均


可获利交易 15.30 30.53 24.31
亏损交易 -24.95 -31.75 -31.35
最大次数


连续获利(盈利) 29 (679.00) 28 (1240.15) 30 (772.70)
连续亏损(亏损) 16 (-290.34) 16 (-600.17) 16 (-562.17)
最大


连续收益(盈利次数) 679.00 (29) 1240.15 (28) 1091.32 (22)
连续亏损(亏损次数) -1011.00 (10) -883.85 (10) -926.15 (15)
平均


连续盈利 5 5 5
连续亏损 3 3 3

选项卡。两个滤波器组合对比测试报告的对比图表: P 滤波器和 D 滤波器

结果分析:

  1. 如果我们基于收入、利润和预期利润标准进行对比,则我们会在添加两个滤波器时获得最佳结果。
  2. 如果我们聚焦亏损,则滤波器优化选项是最后赢家。
  3. 在任何情况下,滤波都会提高 ATS 特性。


总结

  1. 那么,什么是滤波器魔力呢? 滤波器魔力在于其简单性和改变任何 Expert Advisor 特性的能力。
  2. 创建滤波器的所述技术不是用于简单复制。 它仅显示了 P 滤波器和 D 滤波器可以如何为特定的 Expert Advisor 进行开发。 适合某个 Expert Advisor 的滤波器可能会阻碍另一个 Expert Advisor。
  3. 请记住,理想状态下的 ATS 并不需要滤波器! ... 你梦想打造这样一个系统,不是吗?
  4. 我明白这个 Expert Advisor 的代码和滤波器并未优化,当然也不是最理想的。 但在本文中,我们选择了这种特有的编程方式。 我们这样做,可让任何“菜鸟”都可以重复以上步骤,并创造属于他们自己的专属滤波器。
  5. 注意! 请勿在真实的交易中使用本文所述 Expert Advisor!

本文译自 MetaQuotes Software Corp. 撰写的俄文原文
原文地址: https://www.mql5.com/ru/articles/1577

附加的文件 |
DC2008_revers.mq4 (7.17 KB)
在一个 Expert Advisor 内的多个 Expert Advisor 的竞争 在一个 Expert Advisor 内的多个 Expert Advisor 的竞争

使用虚拟交易,你可以创建一个自适应的 Expert Advisor,在真实市场上打开和关闭交易。 将多个策略组合到一个 Expert Advisor 内! 你的多系统 Expert Advisor 会根据虚拟交易的获利能力,自动选择进行真实市场交易的最佳策略。 这种方法可以降低亏损并增加你在市场上操作的获利能力。 进行实验并跟其他人分享你的结果吧! 我想,很多人会对你的策略组合感兴趣。

通过"单元测试"的帮助来提高代码质量 通过"单元测试"的帮助来提高代码质量

就算是简单程序也会经常出现看似难以置信的错误。 “我怎么会编出这种东西?”是我们发现这种错误时的第一反应。 “我应该如何避免它?”则是较少会映入脑海的第二个问题。 编写完美无缺的代码是不可能的,特别是在大型项目里,但可通过技术手段及时检测出这些错误。 本文介绍如何借助通用的“单元测试”方法来提高 MQL4 代码质量。

烛台方向统计再现的研究 烛台方向统计再现的研究

是否能够基于烛台方向的再现趋势,在一天内的特定时间预测市场在即将到来的一小段时间内的市场行为? 即,是否可以在第一时间找出此类事件。 每个交易者可能都想过这个问题。 本文的目的是尝试基于烛台在特定时间间隔内的统计再现来预测市场行为。

验证流言: 全日交易取决于亚洲时段的交易行情 验证流言: 全日交易取决于亚洲时段的交易行情

在本文中,我们会探讨著名论述“全日交易取决于亚洲时段的交易行情”。