逆转:正规化入场点并开发手动交易算法

11 一月 2019, 07:48
Roman Klymenko
0
1 219

概述

在已发表的两篇文章(逆转:圣杯或危险的妄想?逆转:降低最大回撤并测试其它市场),我们一直在研究逆转交易策略。 我们已研究了在不同市场中运用交易策略,并已找到最合适的市场,以及为恰当的逆转正规化基本规则。 该主题似乎已得到充分讨论。 还有哪些关于逆转技术的内容可以撰写? 不过,我们之前提到过一个问题,但我们从未触及其解决方案。

该问题与入场点有关,这在我们的策略中并未正规化。 这意味着在任意时刻均可执行入场交易。 而结果可能是难以预料的。 有人可能会通过止盈平仓了结。 另一些交易者可能会在 5 分钟后入场,并通过止损来完成整个交易链。

这就是为什么,以前文章中在策略测试器里执行的所有测试,仅当依据相同的历史日期、小时和分钟时,才会认为是可靠的。 如果您提前或滞后一分钟入场交易,都无法保证相同的利润增长。

因此,我们需要一些规则来判定“何时入场交易”以及“入场方向”。 这些规则不应该过于恶化我们的利润图表。 让我们试着找到这样的规则。

测试品种

将针对这些品种执行测试,这些品种在 之前文章 中展示出最佳绩效。 此外,这些品种需要具有足够的历史记录,以避免所获结果的随机性。

与之前文章一样,我们将在若干经纪商平台上测试策略。 除外汇对之外,还将使用来自不同市场的品种进行测试。 这是因为我们无法使用标准指标获得更佳或相类似的结果。 因此,我们在 第一篇文章 中发现,没有任何测试指标能够产生类似于外汇市场随机时间入场的结果。

在本文中,我们将测试以下证券:

经纪商 1, 股票市场: TripAdvisor, Sberbank, Nintendo_US, Tencent, Michael_Kors, Starbucks, Gazprom, Petrobras, Snap, SQM。

经纪商 2, 股票市场: ORCL.m, INTC.m, FOXA.m, SBUX.m, NKE.m, HPE.m, MSFT.m, KO.m, ATVI.m。

经纪商 1, 指数: YM。

经纪商 2, 商品: BRENT。

RevertEA 有什么新东西

与上一篇文章相比,RevertEA 已实现以下变化:

  • 新的 Close 按钮能够将任何持仓平仓;
  • 增加了在图表上显示当前持仓利润的可能性(在 Close 按钮旁边);
  • 增加了设定止损为当前价格百分比的可能性;
  • 添加了参数 Use constant trailing after N profit pointsConstant trading in points;
  • 增加了使用 ORDER_FILLING_IOC 填单模式的可能性。

RevertManualEA 的新东西

RevertManualEA 已完成了以下变化:

  • 新的 Close all 按钮能够将 EA 管控的所有持仓平仓;
  • EA 管控的所有持仓总利润显示在 Close all 按钮附近;
  • EA 管控的所有持仓显示在图表中的按钮;
  • 增加了使用 ORDER_FILLING_IOC 填单模式的可能性。

Buttons for positions managed by the EA。 点击品种按钮可打开相应品种的图表。 此外,这些按钮还显示相关信息,例如品种名称,当前步骤以及当前持仓利润。 如果按钮颜色已变化,则表示该持仓已完全平仓(通过止盈或达到交易链的最大步数)。

还要注意新参数 Show the sum of last losses by a symbol button click。 默认设置为 true。 这意味着最后亏损的数额将显示在图表的注释中,只需单击相应的品种按钮即可打开。 这样可以快速得到覆盖交易链中所有亏损所需的最小利润的数据。

正规化入场点

为了消除交易系统结果对入场时间的依赖性,我们需要寻找一些能够在确定条件下入场的规则,而非该品种没有持仓即入场。

我的观点是,移动平均线是确定这样一个入场点的最合适工具。

首先,它能够判断全局趋势,从而确定入场方向:如果移动平均线增长,则入场做多,否则入场做空。

其次,附加规则能够限制入场。 例如,在前一根柱线向上或向下穿越移动平均线之后。

这些规则将用作入场条件。 很久以前,在 RevertEA 智能交易系统中就已实现了运用此类规则的可能性。 若要启用移动平均线,我们唯一需要做的就是更改以下参数:

  • Open short positions — 设为 true, 否则 EA 仅将做多, 忽略做空信号;
  • Period — 在 Indicator MA #1 模块下此参数中设置所需的周期;
  • 根据需要配置 Indicator MA #1 模块下的所有其它设置。

后面附带的存档包含所有 SET 文件,其中包含特定品种的正确设置。

在本文中,我们将使用一条简单的移动平均线。 如果您更喜欢任何其它均线类型,您可以在 EA 设置中的 Indicator MA #1 模块下的相应参数中选择所需的均线类型。

股票市场。 在上一篇文章中,我们发现股票市场最适合逆转策略。 让我们从这个市场开始吧。

首先,我们将比较经纪商 1 的各品种结果。 该经纪商为每个品种提供单独的掉期利率(您可以从上一篇文章中发布的表中检查掉期利率),但无论如何,多头持仓的掉期利率至少是经纪商 2 提供的两倍。 然而,该经纪商也有优势:空头持仓的掉期利率是正值,即持有空头持仓的掉期利率是支付给您的。

所有市场的测试结果将在相应的表格中列出。 表中每行首先显示有关不使用任何指标的测试结果信息。 即,交易链由止盈或止损平仓后立即开仓。 然后,在同一表格行中的新列显示同品种使用相同止损和止盈值和 Simple Moving Average 指标的测试结果。

由于 RevertEA 还支持非逆转交易,我们还将使用移动平均线检查经典交易的盈利能力。 这些测试的最佳结果将显示在表中每行的第三列中。

没有指标的逆转交易策略测试结果与前一篇文章中公布的结果不同。 这是因为自发表以来又已经过去了一个多月。 因此,我们可以检查自那时以来发生了哪些变化。

在继续测试结果之前,我们回顾表中一些列的用途:

  • Annual % — 该值根据以下公式计算:((利润/最大回撤 )*100)/该品种历史数据包括的年数,它是一个近似数字,也是出于比较分析而提供的;
  • Max. losses — 连续亏损的最大次数,即在达到止盈之前我们在交易链中的深入程度;
  • Trades (year/total) — 每年该品种的平均开仓次数(交易总数除以历史数据的年数)。

经纪商 1, 股票市场:

品种
交易 (年数/总数)
盈利因子
 最大 回撤
盈利列
年度 %
最大 亏损
止损 止盈 
 TripAdvisor, 逆转
 TripAdvisor, 逆转 + 均线
 TripAdvisor, 无逆转
 98 / 246
 46 / 116
 65 / 164
 1.36
 1.6
 1.69
 98
 53
 6
 231
 156
 49
 94 %
 117 %
 326%
 6
 4
 9
 155
 155
 60
 195
 195
 155
 Sberbank, 逆转
 Sberbank, 逆转 + 均线
 Sberbank, 无逆转
 150 / 225
 118 / 178
 231 / 347
 1.34
 1.31
 0.79
 45
 17
 43
 86
 49
 -37
 127 %
 192 %
 -
 5
 5
 9
 420
 420
 155
 510
 510
 360
 Nintendo_US, 逆转
 Nintendo_US, 逆转 + 均线
 Nintendo_US, 无逆转
 169 / 339
 32 / 64
 25 / 51
 1.49
 1.72
 1.12
 18
 16
 7
 104
 59
 4
 288 %
 184 %
 28 %
 6
 4
 5
 55
 55
 35
 80
 80
 55
 Tencent, 逆转
 Tencent, 逆转 + 均线
 Tencent, 无逆转
 74 / 223
 26 / 80
 18 / 54
 2.54
 2.48
 1.47
 43
 69
 6
 527
 381
 20
 408 %
 184 %
 111 %
 5
 5
 3
 450
 450
 530
 1500
 1500
 880
 Michael_Kors, 逆转
 Michael_Kors, 逆转 + 均线
 Michael_Kors, 无逆转
 36 / 109
 23 / 70
 15 / 46
 1.51
 1.57
 1
 134
 71
 15
 240
 140
 0
 59 %
 65 %
 -
 5
 4
 4
 190
 190
 200
 330
 330
 400
 Starbucks, 逆转
 Starbucks, 逆转 + 均线
 Starbucks, 无逆转
 15 / 231
 11 / 171
 20 / 300
 1.69
 1.64
 1.07
 38
 36
 13
 251
 174
 11
 45 %
 33 %
 5 %
 4
 4
 6
 160
 160
 95
 195
 195
 105
 Gazprom, 逆转
 Gazprom, 逆转 + 均线
 Gazprom, 无逆转
 265 / 398
 101 / 152
 36 / 54
 1.33
 1.42
 1.03
 59
 18
 20
 142
 55
 2
 160 %
 203 %
 6 %
 6
 4
 5
 150
 150
 240
 180
 180
 480
 Petrobras, 逆转
 Petrobras, 逆转 + 均线
 Petrobras, 无逆转
 23 / 337
 15 / 219
 11 / 162
 1.61
 1.64
 1.16
 86
 160
 28
 623
 388
 39
 49 %
 16 %
 9 %
 5
 5
 7
 240
 240
 240
 300
 300
 410
 Snap, 逆转
 Snap, 逆转 + 均线
 Snap, 无逆转
 62 / 93
 24 / 36
 24 / 37
 1.97
 3.47
 1.49
 44
 12
 7
 227
 95
 12
 343 %
 527 %
 114 %
 4
 2
 6
 75
 75
 45
 135
 135
 120
 SQM, 逆转
 SQM, 逆转 + 均线
 SQM, 无逆转
 64 / 162
 29 / 74
 22 / 57
 1.81
 1.89
 1.02
 55
 68
 12
 288
 142
 1
 209 %
 83 %
 3 %
 5
 5
 5
 125
 125
 150
 240
 240
 185

我们现在不做结论。 首先,查看相应的图表。 对于所有市场,将在本节末尾作出结论。

对于图表,使用以下缩写:

  • PLAIN — 没有任何指标的交易策略图表(若是该品种没有持仓,就会立即执行做多);
  • MA — 基于移动平均线信号入场;
  • NOREVERT — 基于移动平均信号入场且不使用逆转技术。

TripAdvisor:

TripAdvisor

Sberbank:

Sberbank

Nintendo_US:

Nintendo_US

Tencent:

Tencent

Michael_Kors:

Michael_Kors

Starbucks:

Starbucks

Gazprom:

Gazprom

Petrobras:

Petrobras

Snap:

Snap

SQM:

SQM

现在我们来查看经纪商 2 的结果。 无论持仓方向如何,该经纪商提供的都是负数掉期利率。 与经纪商 1 的其它不同:经纪商 2 不会支付您多头持仓的股权。 然而,该经纪商的优势在于不会为空头持仓收取股权。

经纪商 2, 股票市场:

品种
交易 (年数/总数)盈利因子
 最大 回撤
盈利列
年度 %
最大 亏损
止损 止盈 
 ORCL.m, 逆转
 ORCL.m, 逆转 + 均线
 ORCL.m, 无逆转
 44 / 246
 26 / 147
 13 / 76
 1.07
 1.64
 1.51
 275
 65
 9
 46
 281
 24
 3 %
 78 %
 48 %
 8
 6
 7
 90
 90
 100
 150
 150
 235
 INTC.m, 逆转
 INTC.m, 逆转 + 均线
 INTC.m, 无逆转
 33 / 182
 19 / 109
 29 / 162
 1.92
 1.94
 1.31
 23
 24
 6
 219
 116
 22
 173 %
 87 %
 66 %
 4
 4
 7
 130
 130
 70
 180
 180
 145
 FOXA.m, 逆转
 FOXA.m, 逆转 + 均线
 FOXA.m, 无逆转
 53 / 268
 41 / 207
 28 / 144
 1.6
 1.66
 1.07
 47
 28
 8
 201
 150
 6
 85 %
 107 %
 15 %
 5
 4
 5
 90
 90
 115
 120
 120
 135
 SBUX.m, 逆转
 SBUX.m, 逆转 + 均线
 SBUX.m, 无逆转
 49 / 270
 28 / 154
 31 / 173
 1.5
 1.86
 1.11
 58
 22
 11
 217
 143
 9
 68 %
 118 %
 13 %
 5
 4
 8
 130
 130
 70
 160
 160
 150
 NKE.m, 逆转
 NKE.m, 逆转 + 均线
 NKE.m, 无逆转
 35 / 197
 22 / 123
 26 / 146
 2.26
 2.32
 1.29
 140
 75
 11
 947
 422
 28
 122 %
 102 %
 46 %
 6
 5
 8
 135
 135
 105
 275
 275
 205
 HPE.m, 逆转
 HPE.m, 逆转 + 均线MA
 HPE.m, 无逆转
 33 / 99
 16 / 48
 12 / 38
 1.89
 3.55
 2.05
 27
 8
 7
 104
 51
 19
 128 %
 212 %
 90 %
 4
 2
 5
 55
 55
 55
 70
 70
 85
 MSFT.m, 逆转
 MSFT.m, 逆转 + 均线
 MSFT.m, 无逆转
 36 / 199
 28 / 158
 37 / 206
 2.11
 2.06
 1.23
 70
 73
 12
 508
 478
 31
 131 %
 119 %
 46 %
 7
 5
 9
 150
 150
 100
 275
 275
 205
 KO.m, 逆转
 KO.m, 逆转 + 均线
 KO.m, 无逆转
 20 / 110
 16 / 93
 14 / 82
 2.02
 1.77
 1.75
 29
 51
 7
 144
 147
 31
 90 %
 52 %
 80 %
 4
 5
 3
 100
 100
 120
 160
 160
 150
 ATVI.m, 逆转
 ATVI.m, 逆转 + 均线
 ATVI.m, 无逆转
 77 / 425
 24 / 135
 19 / 109
 1.34
 1.99
 1.52
 54
 15
 7
 235
 109
 33
 79 %
 132 %
 85 %
 5
 3
 4
 135
 135
 115
 140
 140
 155

在所有分析的品种中,只有 ORCL.m 的结果在过去一个月中表现令人失望。 它成功达到了链条中最大的第 8 步。 在那种情况下,整条交易链以亏损平仓。 这是无指标的策略。 因此,年度利润百分比非常小。 如果我们使用指标交易,可以避免亏损。

ORCL.m:

ORCL.m

INTC.m:

INTC.m

FOXA.m:

FOXA.m

SBUX.m:

SBUX.m

NKE.m:

NKE.m

HPE.m:

HPE.m

MSFT.m:

MSFT.m

KO.m:

KO.m

ATVI.m:

ATVI.m

指数。 我们只考察一个指数 — 经纪商 1 的道琼斯(YM)。 它的盈利图表可谓完美... 更精确地说,前一篇文章的盈利图表是完美的。 但在新的测试中,盈利链在 2009 年意外中断。 但增加移动平均线有助于避免整个链条的亏损,如下图所示。

经纪商 1, 指数

品种
交易 (年数/总数)盈利因子
 最大 回撤
盈利列
年度 %
最大 亏损
止损 止盈 
 YM, 逆转
 YM, 逆转 + 均线
 YM, 无逆转
 106 / 1 287
 76 / 958
 54 / 678
 1.46
 1.51
 0.9
 2 797
 1 343
 820
 20 089
 13 216
 -636
 57 %
 78 %
 -
 8
 6
 11
 155
 155
 170
 210
 210
 200

YM

商品。 在此,我们也只考察一个证券 — 经纪商 2 的布伦特石油。 在上一篇文章中,只有这个品种展示出良好的利润和余额图表。 尽管使用移动平均线有助于减少连续亏损的最大次数,但总结果变得更糟。

经纪商 2, 商品:

品种
交易 (年数/总数)盈利因子
 最大 回撤
盈利列
年度 %
最大 亏损
止损 止盈 
 Brent, 逆转
 Brent, 逆转 + 均线
 Brent, 无逆转
 146 / 733
 137 / 685
 136 / 682
 1.5
 1.26
 1.1
 8 721
 8 962
 154
 31 144
 18 624
 338
 71 %
 41 %
 43 %
 21
 19
 17
 70
 70
 60
 275
 275
 215

Brent

我们来总结一下。

那么,我们已做了些什么? 我们已成功地将入场点正规化。 所以现在,测试开始日期对测试结果影响不大。

此外,这增加了大多数证券的盈利能力,并将连续亏损的最大次量减少了 1-2 步。

然而,所有品种的净利润因执行交易数量减少(总数降低 1.5-2 倍)而降低。 在此由您决定:您可以选择更大盈利或更低的风险。

测试价格和 ATR 的止损百分比

在对之前文章的评论中,用户提到使用固定的止损和止盈值是不妥的,最好应当使用 ATR 的百分比。 这一说法有些逻辑。 实际上,我们使用相同的止损和止盈价位进行了 15 年测试。 但金融品种在不同时间段可能会有不同的波动性。 此外,品种价格可能在 15 年内发生很大变化,因此 15 年的旧有止损可能不再合适。

因此,RevertEA 已经过修改,启用点数形式的止损规范,依据当前价格或 ATR 的百分比。 可在智能交易系统设定中的 Stop Loss type 参数里选择期望类型。

在这种情况下,ATR 是根据 Gerchik 的方法判定的。 也就是说,ATR 将在日线图上计算,且不考虑太小和太大的柱线。 如果柱线数量不足以进行计算,则使用标准方法。

如果 ATR 判定功能不适合您,您可以轻松地重写 getATR 函数以满足您的需要。 此函数位于 Strategies 文件夹的 strategy_base.mqh 文件中。 其原始源代码如下所示:

double getATR(string name){
   MqlRates rates[];
   ArraySetAsSeries(rates, true);
   double atr=0;
   double pre_atr=0;
   int count=0;
   
   // 获取过去 7 天的柱线数据
   //(这超过了需要,因为我们将计算 5 天的 ATR)
   int copied=CopyRates(name, PERIOD_D1, 0, 7, rates);
   
   // 判定最近 7 天的 ATR,不包括
   // 太大和太小的柱线
   if(copied>=5){
      for(int j=1; j<copied; j++){
         pre_atr+=rates[j].high-rates[j].low;
      }
      pre_atr/=(copied-1);
   }
   
   // 判定最后 5 天或更少的 ATR,包括
   // 太大和太小的柱线
   // 即,尺寸超过 7 天 ATR 值  1.5 倍的柱线
   // 和小于 7 天 ATR 值  0.3 倍的柱线
   // 被丢弃
   if(pre_atr>0){
      for(int j=1; j<copied; j++){
         if( rates[j].high-rates[j].low > pre_atr*1.5 ) continue;
         if( rates[j].high-rates[j].low < pre_atr*0.3 ) continue;
               
         if( ++count > 5 ){
            count=5;
            break;
         }
               
         atr+=rates[j].high-rates[j].low;
      }
      // 如果没有足够的中等柱线
      // 计算正常的 ATR 5
      if(count<2){
         count=0;
         for(int j=1; j<=5; j++){
            ++count;
            atr+=rates[j].high-rates[j].low;
         }
      }
      atr= NormalizeDouble(atr/count, _Digits);
   }
         
   return atr;
}

至于止盈级别,现在不仅可以指定点数,还可以指定止损的倍数(EA 设定中的 Take type 参数。 例如,您可以自开盘价设置三倍于止损级别的止盈。

下面提供了具有不同止损级别的测试结果比较。 测试是在不使用移动平均线的情况下进行的,因为这样我们可以获得更多的入场点,并获得更准确的结果用于比较分析。

表格每行包含三列:

  • 止损和止盈的点数;
  • 止损是价格的百分比,止盈是止损的倍数;
  • 止损是 ATR 的百分比,止盈是止损的倍数;
至于快照,当我开始测试基于 ATR 的止损时,经纪商停止了该品种交易。 它只能进行平仓交易。 所以我无法执行快照测试。
品种
交易 (年数/总数)
盈利因子
 最大 回撤
盈利列
年度 %
最大 亏损
止损 止盈 
 TripAdvisor
 TripAdvisor, percent
 TripAdvisor, atr
 98 / 246
 532 / 1 331
 56 / 141
 1.36
 1.41
 1.42
 98
 310
 386
 231
 1 161
 366
 94 %
 149 %
 37 %
 6
 11
 8
 155
 1
 96
 195
 1.7
 2.7
 Sberbank
 Sberbank, percent
 Sberbank, atr
 150 / 225
 178 / 267
 196 / 295
 1.34
 1.63
 1.78
 45
 223
 67
 86
 713
 257
 127 %
 213 %
 255 %
 5
 11
 6
 420
 1.2
 73
 510
 2.6
 1.7
 Nintendo_US
 Nintendo_US, percent
 Nintendo_US, atr
 169 / 339
 182 / 365
 144 / 288
 1.49
 1.39
 1.65
 18
 31
 35
 104
 100
 182
 288 %
 161 %
 260 %
 6
 5
 9
 55
 1.2
 82
 80
 1.4
 4.1
 Tencent
 Tencent, percent
 Tencent, atr
 74 / 223
 25 / 76
 213 / 640
 2.54
 2.18
 1.38
 43
 24
 42
 527
 168
 177
 408 %
 233 %
 140 %
 5
 4
 6
 450
 3.6
 76
 1500
 2
 1.4
 Michael_Kors
 Michael_Kors, percent
 Michael_Kors, atr
 36 / 109
 46 / 140
 84 / 252
 1.51
 2.6
 2.18
 134
 281
 266
 240
 1 452
 1 352
 59 %
 172 %
 169 %
 5
 7
 7
 190
 3
 77
 330
 2
 2.3
 Starbucks
 Starbucks, percent
 Starbucks, atr
 15 / 231
 26 / 388
 56 / 816
 1.69
 1.26
 1.2
 38
 743
 426
 251
 531
 740
 45 %
 4 %
 11 %
 4
 30
 17
 160
 2.8
 75
 195
 3.5
 4.1
 Gazprom
 Gazprom, percent
 Gazprom, atr
 265 / 398
 64 / 97
 76 / 114
 1.33
 1.99
 3.02
 59
 102
 115
 142
 294
 404
 160 %
 192 %
 234 %
 6
 11
 9
 150
 1.6
 69
 180
 2.8
 3.7
 Petrobras
 Petrobras, percent
 Petrobras, atr
 23 / 337
 25 / 375
 55 / 803
 1.61
 1.45
 1.92
 86
 391
 650
 623
 456
 3 743
 49 %
 8 %
 39 %
 5
 12
 20
 240
 1.6
 83
 300
 2.8
 4
 Snap
 Snap, percent
 Snap, atr
 62 / 93
 55 / 83
 -
 1.97
 2.85
 -
 44
 83
 -
 227
 411
 -
 343 %
 330 %
 -
 4
 5
 -
 75
 4
 -
 135
 2.7
 -
 SQM
 SQM, percent
 SQM, atr
 64 / 162
 58 / 145
 170 / 426
 1.81
 1.79
 1.32
 55
 128
 249
 288
 337
 314
 209 %
 105 %
 50 %
 5
 6
 9
 125
 3.4
 67
 240
 1.7
 1.9
 ORCL.m
 ORCL.m, percent
 ORCL.m, atr
 44 / 246
 16 / 88
  215 / 1 186
 1.07
 1.64
 1.24
 275
 65
 261
 46
 146
 351
 3 %
 40 %
 24 %
 8
 5
 8
 90
 4
 70
 150
 1.4
 1.4
 INTC.m
 INTC.m, percent
 INTC.m, atr
 33 / 182
 25 / 142
 116 / 641
 1.92
 3.36
 1.62
 23
 133
 385
 219
 1 323
 1 358
 173 %
 180 %
 64 %
 4
 6
 14
 130
 2.4
 56
 180
 3.2
 4.1
 FOXA.m
 FOXA.m, percent
 FOXA.m, atr
 53 / 268
 93 / 467
 234 / 1 171
 1.6
 1.57
 1.28
 47
 133
 165
 201
 407
 305
 85 %
 61 %
 36 %
 5
 7
 8
 90
 2
 71
 120
 1.4
 1.4
 SBUX.m
 SBUX.m, percent
 SBUX.m, atr
 49 / 270
 62 / 345
 154 / 849
 1.5
 1.89
 1.5
 58
 100
 269
 217
 694
 1 379
 68 %
 126 %
 93 %
 5
 7
 15
 130
 1.8
 57
 160
 1.7
 3.2
 NKE.m
 NKE.m, percent
 NKE.m, atr
 35 / 197
 20 / 112
 407 / 2 240
 2.26
 2.18
 1.17
 140
 41
 174
 947
 257
 384
 122 %
 113 %
 40 %
 6
 3
 12
 135
 4
 47
 275
 1.4
 1.7
 HPE.m
 HPE.m, percent
 HPE.m, atr
 33 / 99
 66 / 198
 60 / 180
 1.89
 1.76
 2.62
 27
 52
 110
 104
 143
 674
 128 %
 91 %
 204 %
 4
 5
 14
 55
 2.8
 76
 70
 1.4
 3.8
 MSFT.m
 MSFT.m, percent
 MSFT.m, atr
 36 / 199
 28 / 154
 126 / 693
 2.11
 1.39
 1.42
 70
 340
 434
 508
 288
 1 042
 131 %
 15 %
 43 %
 7
 6
 16
 150
 3.2
 69
 275
 1.4
 2.9
 KO.m
 KO.m, percent
 KO.m, atr
 20 / 110
 22 / 121
 125 / 688
 2.02
 2.12
 1.35
 29
 163
 244
 144
 397
 2 272
 90 %
 44 %
 169 %
 4
 6
 14
 100
 2
 64
 160
 2
 2.9
 ATVI.m
 ATVI.m, percent
 ATVI.m, atr
 77 / 425
 15 / 83
 194 / 1 072
 1.34
 2.86
 1.46
 54
 302
 235
 235
 1 313
 1 198
 79 %
 79 %
 92 %
 5
 6
 9
 135
 4
 60
 140
 3.2
 2.3
 YM
 YM, percent
 YM, atr
 106 / 1 287
 157 / 1 969
 234 / 2 927
 1.46
 1.29
 1.02
 2 797
 13 288
 19 984
 20 089
 41 936
 2 669
 57 %
 25 %
 1 %
 8
 27
 17
 155
 0.6
 51
 210
 2.9
 1.7
 Brent
 Brent, percent
 Brent, atr
 146 / 733
 114 / 574
 81 / 407
 1.5
 1.21
 1.34
 8 721
 13 883
 9 368
 31 144
 12 988
 16 587
 71 %
 18 %
 35 %
 21
 19
 13
 70
 1.4
 70
 275
 3.8
 3.2

对于所有测试品种,没有最佳止损的计算方法。 在某些情况下,止损点数更佳。 其它品种的价格或 ATR 百分比止损显示出更大的利润。 但是,这有一个规律性。 如果我们按照价格百分比或 ATR 百分比计算止损,则连续亏损交易的最大次数几乎随着所有成交而显著增加。 最大回撤相应增加。

一般来说,不可能确定哪种止损和止盈计算方法更好。 但我的观点,止损和止盈点数表现出更佳的结果,因为这样方式我们的回撤幅度较小。

测试尾随停止

许多交易者更喜欢使用浮动尾随停止,他们相信这样可以保护利润,从而提高智能交易系统的盈利能力。 我们现在查验这个选项。

EA 有两个参数:

  • Use constant trailing after N profit points — 此参数设置价格应在盈利方向上移动的点数,之后激活尾随停止机制(此限制可防止链条因未来的逆转步骤而亏损平仓,特别是每一步如果不增加手数);
  • Constant trailing in points — 距当前价格的点数,一旦满足 Use constant trailing after N profit points 条件,持仓的止损将会移动。

EA 在每根柱线开始时判定是否需要追踪止损。 即,每 15 分钟执行一次检查,因为我们是在 M15 时间帧内测试策略。

如果需要尾随,那么除了移动止损外,EA 还会取消止盈。 现在,止损是仅剩的唯一平仓方法。 也就是说,除了可能的价格方向变化保护之外,尾随停止还允许您通过取消止盈来增加盈利额度。

以下是没有尾随停止和带有尾随停止的最佳结果对比表。

品种 
交易 (年数/总数)
盈利因子 
 最大 回撤
盈利 
年度 % 
最大 亏损 
 TripAdvisor
 TripAdvisor, 尾随
 100 / 250
 99 / 248
 1.5
 1.53
 98
 100
 315
 321
 128 %
 128 %
 6
 6
 Sberbank
 Sberbank, 尾随
 157 / 236
 158 / 238
 1.37
 1.55
 45
44
 98
 148
 145 %
 224 %
 5
 5
 Nintendo_US
 Nintendo_US, 尾随
 171 / 342
 173 / 347
 1.38
 1.2
 18
 37
 90
 51
 250 %
 68 %
 6
 9
 Tencent
 Tencent, 尾随
 78 / 234
 69 / 209
 1.9
 2.3
 150
 82
 415
 438
 92 %
 178 %
 8
 7
 Michael_Kors
 Michael_Kors, 尾随
 38/ 114
 48 / 145
 1.46
 1.46
 134
 116
 247
 169
 61 %
 48 %
 5
 5
 Starbucks
 Starbucks, 尾随
 16 / 234
 15 / 227
 1.66
 1.6
 38
 51
 247
 234
 44 %
 31 %
 4
 4
 Gazprom
 Gazprom, 尾随
 288 / 433
 295 / 443
 1.34
 1.4
 59
 39
 155
 162
 175 %
 276 %
 6
 5
 Petrobras
 Petrobras, 尾随
 24 / 349
 23 / 344
 1.4
 1.52
 126
 102
 547
 541
 29 %
 36 %
 8
 5
 SQM
 SQM, trailing
 64 / 164
 69 / 174
 1.82
 1.8
 55
 83
 298
 400
 216 %
 192 %
 5
 5
 ORCL.m
 ORCL.m, 尾随
 44 / 246
 46 / 254
 1.07
 1.46
 275
 225
 46
 294
 3 %
 23 %
 8
 7
 INTC.m
 INTC.m, 尾随
 31 / 172
 31 / 174
 1.77
 1.7
 52
 52
 216
 218
 75 %
 75 %
 5
 6
 FOXA.m
 FOXA.m, 尾随
 52 / 260
 68 / 342
 0.91
 1.38
 413
 62
 -57
 126
 -
 40 %
 8
 5
 SBUX.m
 SBUX.m, 尾随
 49 / 272
 49 / 269
 1.5
 1.49
 58
 63
 218
 214
 68 %
 67 %
 5
 5
 NKE.m
 NKE.m, 尾随
 35 / 198
 35 / 199
 2.26
 2.01
 140
 84
 957
 407
 122 %
 88 %
 6
 5
 HPE.m
 HPE.m, 尾随
 30 / 90
 41 / 125
 1.4
 1.4
 46
 21
 75
 43
 54 %
 68 %
 5
 3
 MSFT.m
 MSFT.m, 尾随
 37 / 207
 37 / 208
 2.04
 1.12
 70
 442
 538
 112
 139 %
 4 %
 7
 8
 KO.m
 KO.m, 尾随
 20 / 105
 20 / 109
 1.56
 1.86
 107
 44
 133
 164
 22 %
 67 %
 5
 5
 ATVI.m
 ATVI.m, 尾随
 79 / 435
 80 / 443
 1.27
 1.26
 56
 56
 201
 199
 65 %
 64 %
 5
 5
 YM
 YM, 尾随
 106 / 1 288
 106 / 1 290
 1.3
 1.3
 7 285
 6 989
 15 090
 14 622
 16 %
 16 %
 8
 8
 Brent
 Brent, 尾随
 151 / 759
 149 / 748
 1.3
 1.44
 8 721
 8 790
 21 950
 28 537
 50 %
 64 %
 21
 21

正如您从表中可以看出,尾随停止功能在某些情况下增加了利润,在其它情况下却会减少。 因此,尾随停止不能视为此策略中的一个积极因素。 甚或,如果您检查具有大量历史数据期的品种(星巴克,巴西国家石油公司,YM),尾随停止会降低其盈利能力。 因此,对于没有大量历史数据的品种,其结果的改进是随机的。

然而,尾随停止确实可以略微降低整个交易链由止损平仓的可能性。 参见 FOXA.m 品种的结果。 我们有一个完整的链条是由止损平仓,而非尾随停止。 尾随功能有助于我们消除它。

奇怪的是,FOXA.m 的当前测试结果比之前表中的测试要糟糕得多。 从策略测试器关于这个品种的报告(见下文)当中,我们可以看到整个链条上的止损很久以前就被触发了。 奇怪的事实是,在之前的众多测试中,我们没有设置这种止损。

不幸的是,策略测试器不会执行相同的测试。 它也许使用同一金融产品的 0%,2%,8$ 或任何其它实际数据份额。 这就是测试结果也发生变化的原因。

我不知道为什么会发生这种情况(如果您知道每次测试运行中获得相同结果的任何技巧,请在评论中分享)。 至少这是您不应完全信任依据历史数据所获测试结果的另一个原因。

基于逆转技术的信号

自从我在外汇市场发布 信号 以来已经过去了三个多月,该信号采用了逆转交易策略。 这不是一个跨度非常大的时间段,但足以得出中间结论。

最重要的结果是它仍处于盈利状态。 它平均每月 8%,即每年约 100%。

使用逆转技术的信号结果

除了第一个月,我们在几个月内没有任何亏损。 但第一个月的亏损是可以理解的。 首先,信号只运行了几天。 其次,由于我们在一个预测方向上入场,因此第一个 EA 操作步骤结果不成功是很自然的。

至于消极方面,黄金成功到达了链条的第 7 步。 请记住,对于 18 年的测试,黄金达到了最高的第 8 步。 在我的信号中,它在短短三个月内达到了第七步。 在那种情况下,我决定不等待触发止盈,并在利润超过整个链条亏损时立即将整个链条平仓。 一些利润可能因掉期利率而损失,但其它品种的利润完全可以弥补。

从上图可以看出,由于黄金链条第 6 和第 7 步的止损,得到了最大的回撤。 幸运的是,其它品种的利润有助于降低这种回撤。

至于其它品种,GBPUSD达到了第 6 步。 其它链条由止盈平仓,最多到连续第 4 至第 5 步。

只有 5-10% 的入场在第一步中被平仓。 这是我们的随机入场指示 =)

继续监控信号并评估策略的风险和利润。 我不会中断这个信号。

编写使用级别的手动交易算法

自动交易有许多优点,例如严格遵守交易策略并节省时间,一旦拥有,机器人会为您交易。 不过,成功的人工交易可以表现出更高的盈利能力。 此外,还有其它缺点:

  • 如果整个链条被止损平仓,那将会是一个巨大的损失;
  • 如果在每一步当中使用手数加倍,则链条中最后一步的可用保证金需求很高(其它手数计算方法不适合使用止损和止盈比率)。

如果在第一步中维持保证金等于 1 美元,在第七步中它将等于 64 美元。 这意味着您需要在帐户中存有 64 美元的可用资金才仅能支持一个品种的持仓。 与所投入资金比,产生的利润相对较小。

手动交易允许您在每一步时不使用手数加倍,而是在第 1,第 2 甚或第 3 步之后再应用手数加倍来减少所需的最大保证金。 您可以选择何时入场交易,以及使用何种止损与止盈比率。

此外,在第一,第两或第三步之后使用手数加倍,能够增加链条中的最大可接受步数,从而增加获利了结的机会。

这就是为什么在本节中我想提供一种使用逆转技术的手动交易算法。 我不能肯定这是最好的版本。 但除了逆转之外,该策略还涉及多元化,这也可能在一定程度上降低整体风险。

甚或,多元化允许灵活的风险管理。 例如,如果您的帐户余额在一天或一周结束时增加,您可将所有持仓平仓,包括亏损持仓。 在这种情况下,您无需等待价格向盈利方向移动的逆转步骤。

手动交易工具。 专为人工交易的目的,我为 MetaTrader 5 创建了 RevertManualEA 智能交易系统,为 MetaTrader 4 创建了 RevertmeManualEA4(这两个 EA 都可以在文章附件中找到)。 这些 EA 为您管控手动开立的交易。 交易的品种对 EA 来说并不重要。 无论 EA 运行在哪个品种图表上,它都会管理所有品种。 因此,您只需要启动 EA 一次,例如在您的 VPS(虚拟主机)上。 之后,您能够在任何计算机上使用 MetaTrader 5 账户执行交易。

若要运行 RevertManualEA 管控持仓,您在执行交易时应执行以下操作:

  • 指定 RevertManualEA 使用相同的魔幻数字(默认情况下 777);
  • 在订单注释中,指定步骤编号(即 1)。

不幸的是,在 MetaTrader 5 的手动交易期间无法指定注释或魔幻数字。 因此,我们需要一个特殊的智能交易系统来开立具有相应参数的持仓。 例如,智能交易系统 创建具有固定美元止损的订单

至于 MetaTrader 4,它允许设置注释,但不支持魔幻数字规范。 所以我们还需要一个单独的 EA 来开仓。 例如,智能交易系统 创建具有固定美元止损的订单(MT4)

入场交易算法。 因此,如果止损触发的频率低于止盈,则任何交易举动都将有利可图,而止损时的损失金额低于止盈时赚取的金额。 这一逻辑非常简单。

逆转技术可以降低触发止损价位的几率。 并且,您的链条执行步骤越多,您赔钱的机会就越少。 不过,如果整个链条因止损而平仓,这也会增加潜在损失的数额。

这就是为什么我建议不要在每一步时都加仓手数翻倍,而是至少在两步以后。 这样可以在整个链条因止损而平仓的情况下减少潜在亏损,并减少链条最后一个步骤中的保证金要求。

此外,为了减少整个链条因止损而平仓的损失,我们将使用多元化,并一次开立 5 个品种的持仓,而非仅仅针对一个品种交易。

我们开仓时设定总共 10 美元的止损,即每笔持仓的止损将等于 2 美元。 在这种情况下,根据止盈大小和每步的手数加倍,我们也许会在每个品种上获得以下利润:

止盈 3:1, 两步后手数翻倍:

  • 步骤 1: $6;
  • 步骤 2: $4;
  • 步骤 3: $2;
  • 步骤 4: $6;
  • 步骤 5: $2;
  • 步骤 6: -$2;
  • 步骤 7: $6;
  • 步骤 8: $2;
  • 止损: -34 $.

止盈 4:1, 两步后手数翻倍:

  • 步骤 1: $8;
  • 步骤 2: $6;
  • 步骤 3: $4;
  • 步骤 4: $10;
  • 步骤 5: $6;
  • 步骤 6: $2;
  • 步骤 7: $14;
  • 步骤 8: $6;
  • 整个链条止损: -34 $

止盈 4:1, 三步后手数翻倍:

  • 步骤 1: $8;
  • 步骤 2: $6;
  • 步骤 3: $4;
  • 步骤 4: $2;
  • 步骤 5: $8;
  • 步骤 6: $4;
  • 步骤 7: $0;
  • 步骤 8: -$4;
  • 整个链条止损: -$24

在上述变体中,整个链条上的止损亏损远高于每笔持仓利润。 因此,您应该拥有比整条链的亏损更多的盈利交易。 根据我自己的经验,我推断这只能通过使用大的止损值来实现。 即使您相信您的交易开仓价格非常可靠,在短线交易中价格开始上下波动时,触及止损价位的情况也会经常发生。

因此,您可以在短线交易期间使用以下参数集合:

止盈 5:1, 三步后手数翻倍, 链条只有三步:

  • 步骤 1: 10 $;
  • 步骤 2: 8 $;
  • 步骤 3: 6 $;
  • 整条链止损: -$6

在这种情况下,我们只使用三个逆转步骤。 如果价格在预期方向上移动,我们可以在第一步就赚取利润。 在第一步中,如果我们对于从某个价位回滚的假设是错误的,并且该价位被突破,我们可能会获利。 在第三步中,如果这是一次假突破,我们也可能会获利。 在那之后我们彻底离场,期望价位亏损,进一步的链条步骤对我们没有帮助。

您还可以使用止盈 5:1,在 2 次交易后加倍,并且链条中的步骤非常多。 例如,20-30 步。 您允许的步骤越多,由止损将整条链平仓的可能性就越小。 主要是计算所需保证金,以确保它能够承受整条链所有步骤造成的回撤。 此外,在整条链亏损的情况下,您的存款不应全部丧失。 即使在这种情况下,您也需要有资金进一步交易。

离场。 仓位由 RevertManualEA(或 RevertmeManualEA4)管控和平仓。 此外,您可以随时将单独的或所有持仓平仓。

所有持仓平仓很简单。 例如,如果所有持仓的汇总结果为正值,且您不愿等待每笔持仓由止盈平仓。 打开运行 EA 的品种图表。 图表上 Close all 按钮已就绪。 单击该按钮把 EA 设置中指定的具有相同魔幻数字的所有持仓平仓。 除了平仓以外,还将删除所有链条中的订单。

手动交易示例. 以下视频演示使用两个智能交易系统进行手动交易:RevertManualEA 和 创建具有固定美元止损的订单


手动交易期间该系统的盈利能力在很大程度上取决于您的入场点的准确性。

结束语

作为结论,我想再次声明,逆转交易策略可用于实盘交易。

它不会给您带来暴利。 使用可接受风险时的预期最大值约为每年 100%。

该系统不会令您避免亏损。 整个链条可能随时由止损平仓,您将损失掉过去 N 年赚取的所有利润。

但系统可以运作。 若要令其运行,您需要遵循两个主要原则:

  • 不要使用太窄的止损,最好使用中线交易等级的止损值;
  • 使用的止盈要大于止损。

在自动交易和手动交易测试期间,如果链条中的交易数量小于 10-15,则太窄的止损不会获利。 市场经常发生范围振荡走势,在此期间整个链条由止损平仓。 在这种情况下,您之前赚取的所有利润都会回吐。 因此,使用逆转技术进行日内自动交易问题很多,甚至是不可能的。

太窄的止损还有另一个问题。 点差扩大可能会扼杀整条交易链。 这是一个真实的交易示例:

点差扩大

看看链条中的最后一步。 虽然价格正朝着获利方向发展,但该经纪商的金融产品的点差突然大幅扩大,并触发止损将前一步平仓。 之后触发限价订单并立即由止损平仓,原因在于止损距离小于点差值。 在这种情况下,没有智能交易系统能够创建下一笔限价订单。 然而,如果开立了另一笔限价订单,也可能会由相同的止损来平仓。 上面的例子很好地佐证了当经纪商提供浮动点差时,如果使用太窄的止损可能会导致存款的彻底丧失。

附件

以下 zip 存档如下:

  • RevertEA.zip. MetaTrader 5 专用的智能交易系统 zip 存档
  • RevertManualEA.zip. MetaTrader 5 专用的智能交易系统 zip 存档
  • RevertmeManualEA4.zip. MetaTrader 4 专用的智能交易系统 zip 存档
  • SETfiles.zip. 用于不同经纪商的 SET 文件 zip 存档,以及各品种的最优设置
  • TESTfiles_ma.zip. 一个 zip 存档,包含使用移动平均线的交易策略的测试报告
  • TESTfiles_ma_norevert.zip. 一个 zip 存档,包含使用移动平均线的交易策略的测试报告,没有逆转技术
  • TESTfiles_plain.zip. 一个 zip 存档,包含没有移动平均线的逆转交易策略的测试报告

测试报告存档包含仅与本文中考察的品种相关的报告。 这是因为本系列文章中考察的所有品种的存档太大,无法附加到文章中。

可以在 SET 文件和报告名称中使用以下后缀:

  • 无后缀 — 基于逆转技术的交易系统,不使用移动平均线,以点数指定止损和止盈;
  • _ma — 基于逆转技术和移动平均线的交易系统;
  • _norevert — 基于移动平均线的交易系统,没有逆转技术;
  • _inf — 没有移动平均线的交易系统,使用逆转技术和尾随停止
  • _percent — 基于逆转技术的交易系统,没有移动平均线,止损指定为价格的百分比
  • _atr — 基于逆转技术的交易系统,没有移动平均线,止损指定为 ATR 的百分比。

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

附加的文件 |
RevertManualEA.zip (150.14 KB)
RevertEA.zip (214.22 KB)
SETfiles.zip (587.96 KB)
TESTfiles_ma.zip (4665.65 KB)
TESTfiles_plain.zip (8351.57 KB)
逆转形态:测试头肩形态 逆转形态:测试头肩形态

本文是前一篇名为“逆转形态:测试双顶/双底形态”的后续文章。 现在我们将会看到另一个著名的逆转形态,称为头肩,比较两种形态的交易效率,并尝试将它们合并成为单一的交易系统。

反向交易: 减少最大回撤以及在其它市场上测试 反向交易: 减少最大回撤以及在其它市场上测试

在这篇文章中, 我们继续致力于反向交易技巧。我们将会尝试减少最大余额回撤,直到对之前探讨的交易工具可以接受的水平。我们将会看看这样是否将会减少利润,我们还将在其它市场中检验反转方法的运行,包括股票、商品、指数、ETF和农产品市场。注意,本文包含了很多图片!

自己动手开发多线程异步 MQL5 WebRequest 自己动手开发多线程异步 MQL5 WebRequest

本文介绍了一个可以在 MQL5 中提高 HTTP 请求操作效率的开发库。它在另外的线程中实现 WebRequest 在非阻塞模式下的执行,并且可以用于辅助图表和EA交易,交换自定义事件以及读取共享资源。也提供了源代码。

使用 OpenCL 测试烛形形态 使用 OpenCL 测试烛形形态

这篇文章描述了在"一分钟OHLC"模式下实现 OpenCL 烛形形态测试器的算法。我们还将把它的速度与内建的策略测试器在快速和慢速优化模式下做比较。