交易帐户的高级分析

Nefedov Kirill | 12 四月, 2016

简介

本文介绍使用 MQLab™ 图形报表 脚本的 机械交易系统 操作分析。

本文的目标是:

  • 展示所获取的分析结果较之 MetaTrader 4 终端中的标准报告的优势。
  • 说明用于定义所有交易因素的分析方法。
  • 在详细审查所获取的报告之后,对改进交易作出结论。

使用最具潜力的交易策略之一进行分析。 由于 演示 帐户上使用的 Expert Advisor 不大可能被大众使用,因此我不会在本文中揭示交易策略。 另外,发布的文章中移除了某些列,并对交易进行了排序,以免透露交易方法。

Expert Advisor 的各个副本使用其自己的货币对和特定设置,无法用传统的 MetaTrader 4 终端工具评估和了解所执行交易的所有详情。 要了解内中详情,需要更先进的分析系统。

设置问题:

1. 分析 Expert Advisor 在交易帐户上所做的工作。

2. 检测对 Expert Advisor 操作造成负面影响的参数,一般盈利能力,以及各个货币对的特定盈利能力。

3. 找出影响盈利能力、亏损、预期等的模式

4. 找出用于进一步工作的最佳货币对组合。

5. 生成 Expert 系统运行中的可能改进列表。



生成扩展报告的理由和先决条件

MetaTrader 3开始,交易者们在家中便可参与国际货币兑换。

wikipedia.org
FOREX 代表 外汇
Forex 术语一般指自由兑换货币之间的兑换,而不是指整体的货币兑换交易。 通常,“外汇市场”一词用于 强调报价生成的市场(而非管理)原则。 外汇市场操作可以是交易性质、投机性质、对冲性质和调节(中央银行的货币干预)性质,这取决于操作的目标。

另外,Forex 通常表示通过商业银行或交易中心进行的纯投机性外汇交易,并涉及一个杠杆,即保证金交易。

自从终端向 MetaTrader 4 平台发展并迁移之后,现在可以全天候 24 小时执行全自动交易。

由于两代终端都允许用户在单个交易帐户上使用多个货币对执行交易,因此交易统计对整个帐户是通用的。 开发人员并未提供针对特定货币对以及货币对组的交易执行分析的技术能力。 自第三代终端起,操作统计一直保持不变。 在对下一代 MetaTrader 5 终端的展望中,用户仍然希望获得更好的报告参数,包括更多的细节和更强的可扩展性。。

在过去 3 年间,互联网上出现了多个自动交易策略(机械交易系统Expert Advisor、交易机器人等),国际上举行了 3 次锦标赛,但分析方法却并未出现任何重大变化。 锦标赛上使用了更详细的统计数据,但这种方式无法应用于你自己或其他交易者的交易帐户。

在我看来,互联网上出售的对 Expert Advisor 交易参数的评估方法是缺陷最多的一种方法。 论坛里也充斥着伪“圣杯”。 它们的开发人员确信他们的交易策略是可获利的,然后众多用户审查发布报告开始在论坛内泛滥成灾。

生成扩展报告的第 4 个理由是投资者。 个人认为,这群人几乎完全接触不到有关在演示帐户或任何其他帐户上执行的交易操作的任何分析数据。 即便可以访问所需帐户,投资者也无法充分评估系统操作。 此类投资通常都以亏损而告终。

考虑到这一问题,我的任务是开发更具信息量、更灵活的报告。 提高信息含量的工作仍在继续,但我将展示其目前的功能和应用方法。



扩展报告功能

扩展报告包含标准报告的所有参数。 计算公式取自于源。 以下是针对扩展报告实施的创新内容表。


详细报告是一个 HTML 文件。 它包含所有标准报告参数以及一些额外参数:

  • 利润(基点)
  • 总额 ($) = 利润 ($) + 互换
  • 风险系数 (%)
  • 获利系数
  • 平均获利系数
  • 预计获利
  • 平均 预计获利
  • 余额
  • 注释

报告的图形部分采用 动态 Flash 图、图表和饼图的形式。
报告包含以下图形元素:

  • 周余额
  • 日余额
  • 订单 - 保证金余额
  • 特征数
  • 获利/亏损动态计数
  • 订单手数 & 利润基点 & 风险系数 %
  • 利润 ($) & 总额 ($)
  • 获利系数 & 平均 获利系数





  • 周余额 图按周显示将获利或亏损仓位汇总后的获利或亏损额。
  • 日余额 图显示将一天内的获利或亏损仓位汇总后的获利或亏损额。
  • 订单 - 保证金余额 显示各个交易的利润或亏损额。

特征数 饼图按货币对显示已结订单的数量。 每个货币对都有其限定的颜色,最高值显示为图的扩展块。






获利/亏损动态计数 柱状图针对某一货币对显示各个订单类型的获利和亏损交易数量。


自动生成 XML 文件 以生成图表。 文件保存在你的 PC 硬盘上。






检查与警告系统。 此系统可防止错误地设置脚本设置中的参数,并对错误数据发出警告。


报告过滤系统。 可通过应用各种过滤器,以多种方式生成报告。 过滤完成后,你就会收到执行分析时所需的报告。






日期和时间过滤器。 如果你要生成针对特定日期或时间的报告,则此功能是必需的。 此报告包括所有已结订单、未结订单和挂单,这些订单的未结和已结状况与指定时间设置一致。


订单注释过滤器。 此功能按特定参数过滤报告,并添加所含注释与脚本设置中指定的注释相符的交易。






幻数 过滤器是区分自动和手动交易的必要工具,或是在单个帐户上由多个 Expert Advisor 执行自动交易的必要工具。 此报告仅包含其幻数与脚本设置中指定的幻数相符的仓位和订单。


在报告中启用/禁用挂单显示。 不必始终在报告中显示挂单,因为它们并不包含任何有助于分析的数据,同时还会将 Expert Advisor 的操作或手动交易逻辑透露给第三方。






在报告中启用/禁用未结订单显示。 必须始终在报告中向投资者或任何其他人员显示未结订单。


在报告中启用/禁用零利润仓位显示。 如果交易历史记录包含零利润订单,报告中最好不要包括它们,因为它们并不包含任何重要数据,同时还会导致获利系数、数学期望值等计算数据减少。






仅显示必要列的过滤器。 要实现高效的信息呈示以及在不扭曲交易结果的情况下隐藏重要的交易策略元素,这个过滤器是必要的工具。


生成报告时对订单进行排序。 可按任意列进行设置。 此功能可帮助用户更好地理解报告,并通过大量参数(例如按建仓和平仓时间、货币对、手数等)将报告参数组合起来。订单可保存在报告中,避免泄露 Expert Advisor 操作逻辑。 这指的是多货币策略,使用这种策略时,可通过特定参数在各种货币对上执行建仓操作。






计算订单的使用寿命 此参数是了解 Expert Advisor 的参数或交易风格的重要途径。 订单使用寿命越长,入场信号准确性偏低的可能性以及订单长时间处于亏损状态的可能性就越高。 如果使用寿命较短,则意味着此策略基于剥头皮交易和基点交易。 这有时会导致由交易中心收紧交易规则。


以货币对的点值来计算获利和亏损额 此参数可让用户更好地理解 Expert Advisor 达成的目标。 此计算并不取决于动态手数、杠杆等。



Expert Advisor 的操作分析

如前所述,Expert Advisor 在各个货币对上单独进行交易,未使用多货币规则。 每个货币对都在策略测试程序中单独进行优化。 由于大部分情况下,任何策略都几乎可在任何货币对上进行交易,因此我们决定在 22 个货币对上测试 Expert Advisor。 已基于货币对数量 * 10K 计算出初始保证金。 结果,初始余额有 220К。 在初始测试之前,已针对 1 个月的时间间隔优化了各个货币对。

在 2 个月的全自动化交易之后,我们最终可以检查查看结果。 已在演示帐户上启动了 MQLab™ 图形报表, 并已获得以下结果。

可以下载和查阅完整的报告。 所附文件的名称是 FULL_Report.zip (440.3 Kb)

以下是标准报告和扩展报告的两个对比表。

标准报告

总利润: 950 592.08 总亏损: -161 808.04 总净利润: 788 784.04
获利系数: 5.87 预期获利: 949.20

绝对亏损: 0.00 最大亏损: 40 642.35 (4.26%) 相对亏损: 4.26% (40 642.35)
总交易次数: 831 空头仓位(获利 %): 221 (65.16 %) 多头仓位(获利 %): 610 (81.15 %)


获利交易次数(总交易次数的 %): 639 (76.90 %) 亏损交易次数(总交易次数的 %): 192 (23.10 %)
最大
获利交易: 31 003.20 亏损交易: -11 536.80
平均
获利交易: 1 487.62 亏损交易: -842.75
最大
连续获利交易数 ($): 46 (74 627.29) 连续亏损交易数 ($): 11 (-2 050.92)
最大
连续获利(次数): 115 265.49 (45) 连续亏损(次数): -26 364.80 (4)
平均
连续获利次数: 9 连续亏损次数: 3


扩展报告

总利润: 950592.08 总亏损: -161808.04 总净利润: 788784.04
获利系数: 5.87 平均获利系数: 1.77 预期获利: 949.20
绝对亏损: 0.00 最大亏损: 19084.09 (2.31%) 相对亏损: 2.67% (12866.40)
总交易次数: 831 空头仓位(获利 %): 221 (65.16 %) 多头仓位(获利 %): 610 (81.15 %)


获利交易次数(总交易次数的 %): 639 (76.90 %) 亏损交易次数(总交易次数的 %): 192 (23.10 %)
最大
获利交易: 31003.20 亏损交易: -11536.80
平均
获利交易: 1487.62 亏损交易: -842.75
最大
连续获利交易数 ($): 57 (105530.75) 连续亏损交易数 ($): 8 (-764.64)
最大
连续获利(次数): 107894.42 (28) 连续亏损(次数): -11536.80 (1)
平均
连续获利次数: 6 连续亏损次数: 1

对比这 2 张表格,我们可以看到扩展报告的一些参数(最大亏损、相对亏损等)与标准报告并不一致。 这些并不是报告生成错误。 如前所述,报告历史记录中的已结订单经过排序,(在脚本设置中进行了设置)以免透露 Expert Advisor 操作的逻辑。

以下排序适用于扩展报告:

1. 按建仓时间,以升序排序。
2. 按平仓时间,以降序排序。

标准报告没有此类功能。

当然,所有参数都是基于所应用的排序方法进行计算的。

另外,扩展报告中还出现了新的参数 - 平均获利系数 (计算平均获利系数)。 与标准报告的获利系数相比, 我认为此新参数提供 的数据更具信息量也更稳定。 我认为此新参数提供 的值有相当大的变化范围,这取决于获得的利润或损失。 由于此参数是报告中最重要的参数之一,因此会针对各个已结订单计算 我认为此新参数提供 ,并将其显示在扩展报告的单独表格列中。 平均获利系数 用同样的方法进行计算和显示。 利用此数据,我们可以创建一个能够清晰显示帐户上交易活动执行方式的比较图表。 同时还能查看所执行的交易何时背离此数据并开始朝不利的方向前进。

一点题外话。
由于网站引擎不支持插入外部 Flash,也无法将外部 Flash 上传到服务器上,因此本文中将图表和饼图替换为静态图像。 查看完整报告时,可以看到整个动画图形设计。

扩展报告有 获利系数 平均获利系数 参数的比较图表。


获利系数和平均获利系数

通过移动横向滑块,我们可以看到各个时间间隔,其中的 获利系数 参数起落较大, 平均获利系数 线则较为平滑, 带值的点表示交易。

从个人经验来看,我可以说 获利系数 参数应始终高于 平均获利系数。 在这种情况下,系统被视为更具盈利能力也更稳定。 如果 获利系数 低于 平均获利系数,就必须给出提醒并详细检查发生的情况。

在我的案例中,到第 376 个已执行交易时(即测试开始后的三周左右),获利系数已降至平均线以下。 检查详细报告之后,我确信此交易系统应基于新数据每两周左右优化一次。 这样, 获利系数 平均获利系数 参数的效率应可保持在较高的水准。

因此,我们确定,Expert Advisor 至少应每两周优化一次。 但大量其他问题也随之而起:

  • 应该优化哪些货币对?
  • 交易中涉及多少货币对?
  • 哪些货币对是盈利的?哪些是亏损的?
  • 等等。

已在扩展报告中添加了图形,以阐明所有这些问题。 第一个饼图显示各个货币对上的交易数量,而第二个饼图按订单类型显示操作的统计数据以及针对各个货币对计算得出的获利和亏损交易数。

分析 特征数饼图时, 我们可以快速定义已执行交易数相对于其他货币对来说是最小数量的货币对。 同时,图中也将带最大已执行交易数的货币对标记为扩展“饼块”。

从饼图中选择了带最小已执行交易数的货币对后(即 EURCAD、CADCHF、CHFJPY、GBPJPY),我们检查 获利/亏损动态计数 图上的已执行交易类型的统计数据。 此图表明,这些货币对不仅执行少量交易,而且已执行的获利交易被同样数量的亏损交易抵消。 这意味着此货币对并无盈利,甚至很可能会亏损。

要定义 Expert Advisor 使用某些参数时的最佳交易方向,通常必须按已执行交易类型进行区分以及对这些交易进行计算。 如果 多头空头 仓的设置参数是不同的,则可更方便地配置或禁用特定方向上的交易或在收到此统计数据后优化买入和卖出参数。如果多头和空头仓的设置参数是不同的,则可更方便地配置或禁用特定方向上的交易或在收到此统计数据后优化买入和卖出参数。

我们继续分析 获利/亏损动态计数 图,并仅在一个方向定义 7 个货币对交易: AUDUSDCADJPYUSDJPYEURGBPGBPJPYEURNZDNZDCHF 和另外三个货币对 USDCHFCADCHFEURCAD 在订单类型中占相当大的比例。 在标准报告中就很难发现这一情况。 我已将所有上述货币对分配到在一个方向上交易的货币对组中。 此类工作的理由取决于交易策略或市场动态。 换句话说,我们可以检查货币对图表,以确定此类活动的理由并查看一切细节。 本文中我不会那么做。 这主要是个手工活,每个交易者都能自己做。

因此我设法定义了大量货币对,但其效率招来了质疑。 主要的疑问是测试帐户上的亏损值。 最大亏损: 2.31%。 我们可以假设交易流程中已使用了这些货币对,它们降低了交易效率或导致了亏损,无法实现对其他货币对的有效工作。 为了定义这些货币对,并将它们排除在交易之外,我们应单独分析各个货币对。 标准报告不提供此类可能性,所以我不得不开发这个货币对过滤方法。

使用带货币对过滤的脚本,我们可以收到每个货币对的相关详细报告,包括计算其盈利能力、亏损、数学期望值等。基于过滤数据的图表也通过同样的方式生成。

一点题外话:
在已开发的报告脚本中, MQLab™ 图形报表 开头采用大量设置,不仅允许分析特定货币对的交易,还能按 幻数 以及订单注释过滤这些交易。 这些过滤可按货币对或交易类型(手动或自动)轻松对帐户进行划分,或仅分析注释中包含特定参数的订单,例如入市条件。 也可将 幻数、货币对和仓位或订单注释组合起来。

本文随附各个货币对的完整报告(.rar 文件): Records_of_individual_currencies.part1.rar (3.8 Mb) 和 Records_of_individual_currencies.part2.rar (3.7 Mb)

让我们根据所得结果做一个汇总表。


总利润
总亏损

净利润
利润
系数
平均
获利系数
预期
收益
绝对
亏损
最大
亏损

交易

交易

交易
GBPCAD
61664.17
-13150.13
48514.04
4.69
1.30
703.10
0.00
11881.17
69
22
47
GBPCHF
47115.25
-1913.54
45201.71
24.62
5.47
1027.31
0.00
1207.25
44
16
28
GBPUSD
114853.31
-49384.70
65468.61
2.33
0.46
1190.34
0.00
21779.60
55
25
30
AUDUSD
61227.83
-3446.00
57781.83
17.77
1.97
1444.55
0.00
3203.00
40
0
40
CADJPY
28850.51
-2051.31
26799.20
14.06
4.69
837.48
989.40
1810.67
32
0
32
EURUSD
100910.61
-20189.97
80720.64
5.00
2.60
2124.23
9366.76
11961.84
38
17
21
EURJPY
28099.81
-2606.26
25493.55
10.78
2.70
509.87
0.00
1847.96
50
10
40
EURCHF
35744.67
-1843.92
33900.75
19.39
6.68
869.25
0.00
873.09
39
18
21
EURAUD
64700.63
-8901.46
55799.17
7.27
3.63
1328.55
387.07
3924.49
42
11
31
GOLD
32420.35
-7822.52
24597.83
4.14
0.60
390.44
0.00
3622.96
63
19
44
USDCHF
36319.19
-12784.30
23534.89
2.84
1.67
871.66
1786.53
11316.21
27
3
24
USDJPY
36685.74
-989.33
35696.41
37.08
17.45
1427.86
772.90
963.67
25
0
25
AUDCHF
30933.15
-8692.07
22241.08
3.56
1.37
411.87
208.19
4935.03
54
22
32
EURGBP
35672.84
-5011.78
30661.06
7.12
3.56
1022.04
0.00
2414.87
30
0
30
AUDJPY
46455.59
-937.53
45518.06
49.55
8.74
1137.95
0.00
853.87
40
6
34
GBPJPY
4799.64
-181.80
4617.84
26.40
5.28
384.82
0.00
181.80
12
0
12
AUDCAD
63144.23
-4970.32
58173.91
12.70
5.08
1385.09
263.21
3734.90
42
15
27
CHFJPY
6878.05
-1119.51
5758.54
6.14
2.46
411.32
653.61
755.33
14
7
7
CADCHF
2367.64
-57.69
2309.95
41.04
9.12
210.00
0.00
33.36
11
2
9
GBPAUD
93826.55
-15290.74
78535.81
6.14
2.79
1227.12
513.66
11497.83
64
19
45
EURCAD
2524.46
-463.16
2061.30
5.45
4.36
229.03
124.98
311.34
9
8
1
EURNZD
15388.79
0.00
15388.79
0.00
0.00
512.96
0.00
0.00
30
0
30
NZDCHF
9.07
0.00
9.07
0.00
0.00
9.07
0.00
0.00
1
1
0
平均值
41330.09
-7035.13
34294.96
13.39
4
855.04
655.06
4309.14
36.13
10
27

制作表格并计算各个参数的值之后,我引入了一个“阈值”,我认为这些参数值不可低于此阈值。 如果所得结果低于此阈值,则该货币对上的交易效率较低或会产生亏损。

让我们选择货币对,并将其分组。 主要参数是 总利润总交易数


良好交易:


总利润
总亏损

净利润
利润
系数
平均
获利系数
预期
收益
绝对
亏损
最大
亏损

交易

交易

交易
GBPCAD
61664.17
-13150.13
48514.04
4.69
1.30
703.10
0.00
11881.17
69
22
47
GBPCHF
47115.25
-1913.54
45201.71
24.62
5.47
1027.31
0.00
1207.25
44
16
28
GBPUSD
114853.31
-49384.70
65468.61
2.33
0.46
1190.34
0.00
21779.60
55
25
30
AUDUSD
61227.83
-3446.00
57781.83
17.77
1.97
1444.55
0.00
3203.00
40
0
40
EURUSD
100910.61
-20189.97
80720.64
5.00
2.60
2124.23
9366.76
11961.84
38
17
21
EURAUD
64700.63
-8901.46
55799.17
7.27
3.63
1328.55
387.07
3924.49
42
11
31
AUDJPY
46455.59
-937.53
45518.06
49.55
8.74
1137.95
0.00
853.87
40
6
34
AUDCAD
63144.23
-4970.32
58173.91
12.70
5.08
1385.09
263.21
3734.90
42
15
27
GBPAUD
93826.55
-15290.74
78535.81
6.14
2.79
1227.12
513.66
11497.83
64
19
45

可以下载和查阅完整的报告。 所附文件的名称是 Good_trade_Report.zip (402.9 Kb)

此表所含货币对的 总利润总交易数 交易参数值高于平均值。 这些是测试帐户上最具盈利能力的货币对。 换句话说,它们是利润的驱动力。


一般交易:


总利润
总亏损

净利润
利润
系数
平均
获利系数
预期
收益
绝对
亏损
最大
亏损

交易

交易

交易
CADJPY
28850.51
-2051.31
26799.20
14.06
4.69
837.48
989.40
1810.67
32
0
32
EURJPY
28099.81
-2606.26
25493.55
10.78
2.70
509.87
0.00
1847.96
50
10
40
EURCHF
35744.67
-1843.92
33900.75
19.39
6.68
869.25
0.00
873.09
39
18
21
GOLD
32420.35
-7822.52
24597.83
4.14
0.60
390.44
0.00
3622.96
63
19
44
USDCHF
36319.19
-12784.30
23534.89
2.84
1.67
871.66
1786.53
11316.21
27
3
24
USDJPY
36685.74
-989.33
35696.41
37.08
17.45
1427.86
772.90
963.67
25
0
25
AUDCHF
30933.15
-8692.07
22241.08
3.56
1.37
411.87
208.19
4935.03
54
22
32
EURGBP
35672.84
-5011.78
30661.06
7.12
3.56
1022.04
0.00
2414.87
30
0
30
EURNZD
15388.79
0.00
15388.79
0.00
0.00
512.96
0.00
0.00
30
0
30

可以下载和查阅完整的报告。 所附文件的名称是 Average_trade_Report.zip (395.7 Kb)

已基于以下原则执行了表中所做的选择:
1. 总利润 < 总利润 平均值
2. 总利润 > (总利润 平均值/ 2)

唯一不符合此条件的货币对是 EURNZD。 它包括在表中,因为此货币对一次亏损交易也未执行。


不良交易:


总利润
总亏损

净利润
利润
系数
平均
获利系数
预期
收益
绝对
亏损
最大
亏损

交易

交易

交易
GBPJPY
4799.64
-181.80
4617.84
26.40
5.28
384.82
0.00
181.80
12
0
12
CHFJPY
6878.05
-1119.51
5758.54
6.14
2.46
411.32
653.61
755.33
14
7
7
CADCHF
2367.64
-57.69
2309.95
41.04
9.12
210.00
0.00
33.36
11
2
9
EURCAD
2524.46
-463.16
2061.30
5.45
4.36
229.03
124.98
311.34
9
8
1
NZDCHF
9.07
0.00
9.07
0.00
0.00
9.07
0.00
0.00
1
1
0

可以下载和查阅完整的报告。 所附文件的名称是 Bad_Trade_Report.zip (364.7 Kb)

此货币对组是我们交易活动中的一个障碍。 它使我们最具盈利能力的货币对的驱动力无法全效运行。

将所有交易品种按组划分后,如果各个组都是单独在帐户上进行测试的,那么让我们去了解一下各个组的交易参数的状况,想必这是非常有趣的。 为此,我们应该应用过滤系统并按货币对进行分组。

良好交易:

总利润: 653898.17 总亏损: -118184.39 总净利润: 535713.78
获利系数: 5.53 平均获利系数: 1.68 预期获利: 1234.36
绝对亏损: 0.00 最大亏损: 19168.35 (2.92%) 相对亏损: 3.81% (10933.02)
总交易次数: 434 空头仓位(获利 %): 131 (66.41 %) 多头仓位(获利 %): 303 (81.19 %)


获利交易次数(总交易次数的 %): 333 (76.73 %) 亏损交易次数(总交易次数的 %): 101 (23.27 %)
最大
获利交易: 31003.20 亏损交易: -11536.80
平均
获利交易: 1963.66 亏损交易: -1170.14
最大
连续获利交易数 ($): 26 (74353.47) 连续亏损交易数 ($): 8 (-764.64)
最大
连续获利(次数): 98581.16 (19) 连续亏损(次数): -11536.80 (1)
平均
连续获利次数: 6 连续亏损次数: 1

一般交易:

总利润: 312961.61 总亏损: -52744.84 总净利润: 260216.77
获利系数: 5.93 平均获利系数: 1.77 预期获利: 712.92
绝对亏损: 0.00 最大亏损: 7621.15 (1.98%) 相对亏损: 1.98% (7621.15)
总交易次数: 365 空头仓位(获利 %): 74 (66.22 %) 多头仓位(获利 %): 291 (79.73 %)


获利交易次数(总交易次数的 %): 281 (76.99 %) 亏损交易次数(总交易次数的 %): 84 (23.01 %)
最大
获利交易: 23814.20 亏损交易: -2877.67
平均
获利交易: 1113.74 亏损交易: -627.91
最大
连续获利交易数 ($): 32 (67689.94) 连续亏损交易数 ($): 12 (-7482.88)
最大
连续获利(次数): 67689.94 (32) 连续亏损(次数): -7482.88 (12)
平均
连续获利次数: 6 连续亏损次数: 2

不良交易:

总利润: 16578.86 总亏损: -1822.16 总净利润: 14756.70
获利系数: 9.10 平均获利系数: 3.12 预期获利: 313.97
绝对亏损: 0.00 最大亏损: 388.36 (0.17%) 相对亏损: 0.17% (388.36)
总交易次数: 47 空头仓位(获利 %): 18 (55.56 %) 多头仓位(获利 %): 29 (86.21 %)


获利交易次数(总交易次数的 %): 35 (74.47 %) 亏损交易次数(总交易次数的 %): 12 (25.53 %)
最大
获利交易: 3348.53 亏损交易: -388.36
平均
获利交易: 473.68 亏损交易: -151.85
最大
连续获利交易数 ($): 10 (7119.78) 连续亏损交易数 ($): 2 (-364.18)
最大
连续获利(次数): 7119.78 (10) 连续亏损(次数): -388.36 (1)
平均
连续获利次数: 3 连续亏损次数: 1

从这个统计数据来看,“不良交易”中的货币对对盈利能力并无多少影响。 可从测试中排除此货币对组。

让我们在单个报告中加入“良好交易”和“一般交易”组。

可以下载和查阅这两组的完整报告。 所附文件的名称是 Good_Average_trade_Report.zip (437.4 Kb)

总利润: 966859.78 总亏损: -170929.23 总净利润: 795930.55
获利系数: 5.66 平均获利系数: 1.70 预期获利: 996.16
绝对亏损: 0.00 最大亏损: 19084.09 (2.33%) 相对亏损: 2.70% (12866.40)
总交易次数: 799 空头仓位(获利 %): 205 (66.34 %) 多头仓位(获利 %): 594 (80.47 %)


获利交易次数(总交易次数的 %): 614 (76.85 %) 亏损交易次数(总交易次数的 %): 185 (23.15 %)
最大
获利交易: 31003.20 亏损交易: -11536.80
平均
获利交易: 1574.69 亏损交易: -923.94
最大
连续获利交易数 ($): 37 (67514.27) 连续亏损交易数 ($): 8 (-764.64)
最大
连续获利(次数): 108047.10 (19) 连续亏损(次数): -11536.80 (1)
平均
连续获利次数: 6 连续亏损次数: 2

将加入组的所得结果与完整报告的统计数据进行比较之后,我们可以看到以下参数。


完整报告
组合报告
总利润: 950592.08 966859.78
总亏损: -161808.04 -170929.23
总净利润: 788784.04 795930.55
获利系数: 5.87 5.66
平均获利系数: 1.77 1.70
预期获利: 949.20 996.16
绝对亏损: 0.00 0.00
最大亏损: 19084.09 (2.31%) 19084.09 (2.33%)
相对亏损: 2.67% (12866.40) 2.70% (12866.40)
总交易次数: 831 799
空头仓位(获利 %): 221 (65.16 %) 205 (66.34 %)
多头仓位(获利 %): 610 (81.15 %) 594 (80.47 %)
获利交易次数(总交易次数的 %): 639 (76.90 %) 614 (76.85 %)
亏损交易次数(总交易次数的 %): 192 (23.10 %) 185 (23.15 %)
最大获利交易: 31003.20 31003.20
最大亏损交易: -11536.80 -11536.80
平均获利交易: 1487.62 1574.69
平均亏损交易: -842.75 -923.94
最大连续获利交易数 ($): 57 (105530.75) 37 (67514.27)
最大 连续亏损交易数 ($): 8 (-764.64) 8 (-764.64)
最大 连续获利(次数): 107894.42 (28) 108047.10 (19)
最大 连续亏损(次数): -11536.80 (1) -11536.80 (1)
平均连续获利次数: 6 6
平均连续亏损次数: 1 2

从表中可以看出,一些参数的值增大了,一些则减小了,但并没有较大的差异。 这是因为“不良交易”组并不是亏损交易组。 这里我们可以看到所获结果的特殊案例,其中,各个货币对提高了整体盈利能力。

如何才能进一步增加此交易方法的盈利能力和可靠性? 查看各个货币对的所获结果和报告之后,我得出了一个结论:要获得更成功的交易,Expert 系统还缺一点东西。 那就是取决于其他货币对的入市规则。

由于各个货币对都是单独进行交易的,且优化是针对各个货币对执行的,因此各个货币对的设置都有所不同。 这意味着货币对将根据信号在不同的时间,以不同的方向入市。 但在定义主要货币对之后,我们可以将其绑定。



创建交易过滤系统

本文所述的过滤系统之前尚未有人开发并测试过。 因此请将其视为一种理论,下面我来详细地介绍一下。

让我们基于“良好交易”组针对各个货币对的统计数据创建一个余额表。

由于此组包含 9 个货币对,我们向它们分别分配 1 到 9 个点。 列中最底下的参数获得 1 点,最上面的获得 9 个点。

如果有两个或以上交易对的参数一致,则添加相同数量的点数。

绝对 亏损 最大亏损 列以相反的顺序进行评估。



利润

样本
总净
利润
利润
系数
平均获利
系数
预期
收益
绝对
亏损
最大
亏损

交易

交易

交易
GBPCAD
4
61664.17
4
-13150.13
3
48514.04
2
4.69
2
1.30
1
703.10
5
0.00
3
11881.17
7
69
8
22
9
47
GBPCHF
2
47115.25
8
-1913.54
1
45201.71
8
24.62
8
5.47
2
1027.31
5
0.00
8
1207.25
4
44
5
16
3
28
GBPUSD
9
114853.31
1
-49384.70
7
65468.61
1
2.33
1
0.46
4
1190.34
5
0.00
1
21779.60
5
55
9
25
4
30
AUDUSD
3
61227.83
7
-3446.00
5
57781.83
7
17.77
3
1.97
8
1444.55
5
0.00
7
3203.00
2
40
1
0
7
40
EURUSD
8
100910.61
2
-20189.97
9
80720.64
3
5.00
4
2.60
9
2124.23
1
9366.76
2
11961.84
1
38
6
17
1
21
EURAUD
6
64700.63
5
-8901.46
4
55799.17
5
7.27
6
3.63
6
1328.55
3
387.07
5
3924.49
3
42
3
11
5
31
AUDJPY
1
46455.59
9
-937.53
2
45518.06
9
49.55
9
8.74
3
1137.95
5
0.00
9
853.87
2
40
2
6
6
34
AUDCAD
5
63144.23
6
-4970.32
6
58173.91
6
12.70
7
5.08
7
1385.09
4
263.21
6
3734.90
3
42
4
15
2
27
GBPAUD
7
93826.55
3
-15290.74
8
78535.81
4
6.14
5
2.79
5
1227.12
2
513.66
4
11497.83
6
64
7
19
8
45

让我们计算各个货币对所获点数的总和。

当前货币对 所获点数
结果
GBPCAD 4 + 4 + 3 + 2 + 2 + 1 + 5 + 3 + 7 + 8 + 9
48
GBPCHF 2 + 8 + 1 + 8 + 8 + 2 + 5 + 8 + 4 + 5 + 3
54
GBPUSD 9 + 1 + 7 + 1 + 1 + 4 + 5 + 1 + 5 + 9 + 4
47
AUDUSD 3 + 7 + 5 + 7 + 3 + 8 + 5 + 7 + 2 + 1 + 7
55
EURUSD 8 + 2 + 9 + 3 + 4 + 9 + 1 + 2 + 1 + 6 + 1
46
EURAUD 6 + 5 + 4 + 5 + 6 + 6 + 3 + 5 + 3 + 3 + 5
51
AUDJPY 1 + 9 + 2 + 9 + 9 + 3 + 5 + 9 + 2 + 2 + 6
57
AUDCAD 5 + 6 + 6 + 6 + 7 + 7 + 4 + 6 + 3 + 4 + 2
56
GBPAUD 7 + 3 + 8 + 4 + 5 + 5 + 2 + 4 + 6 + 7 + 8
59

现在我们可以定义最平衡的货币对。

现在让我们分别定义基准货币和报价货币的余额。 为此我们应该分别用基准货币和报价货币制作下表。

当前货币对 基准货币 报价货币
GBPAUD 英镑 澳元
AUDJPY 澳元 日元
AUDCAD 澳元 加元
AUDUSD 澳元 美元
GBPCHF 英镑 瑞郎
EURAUD 欧元 澳元
GBPCAD 英镑 加元
GBPUSD 英镑 美元
EURUSD 欧元 美元

让我们计算基准和报价货币的重复次数,并制作下表。


英镑 澳元 欧元 日元 加元 美元 瑞郎
基准货币 4
3
2




报价货币
2

1
2
3
1

计算“ 良好交易 一般交易 ”组的所有货币对的空头仓”和“多头仓的总和,我们得出以下结果:

良好交易 = 203 交易

多头仓 = 581 交易

由于有很多双向交易,我们会试着考虑所有可能的过滤情况。

让我们 开发能够防止在 相反方向建仓的交易过滤系统。 此系统基于所有货币对的 空头仓 多头仓 的基准货币。


请勿建
如果以下交易品种的空头仓交易处于活动状态
如果以下交易品种的多头仓交易处于活动状态

GBPCAD

多头仓: 英镑瑞郎英镑美元英镑日元英镑澳元
欧元英镑
空头仓:
欧元英镑
英镑瑞郎英镑美元英镑日元英镑澳元

GBPCHF

多头仓:
英镑加元 英镑美元英镑日元 英镑澳元
欧元英镑
空头仓:
欧元英镑
英镑加元 英镑美元英镑日元 英镑澳元

GBPUSD

多头仓:
英镑加元 英镑瑞郎 英镑日元 英镑澳元
欧元英镑
空头仓:
欧元英镑
英镑加元 英镑瑞郎 英镑日元 英镑澳元

AUDUSD

多头仓:
澳元瑞郎 澳元日元 澳元加元
欧元澳元英镑澳元
空头仓:
欧元澳元英镑澳元
澳元瑞郎 澳元日元 澳元加元

CADJPY

多头仓:
加元瑞郎
英镑加元澳元加元欧元加元
空头仓:
英镑加元澳元加元欧元加元
加元瑞郎

EURUSD

多头仓:
欧元日元 欧元瑞郎 欧元澳元 欧元英镑 欧元加元 欧元新西兰元

空头仓:

欧元日元 欧元瑞郎 欧元澳元 欧元英镑 欧元加元 欧元新西兰元

EURJPY

多头仓:
欧元美元 欧元瑞郎 欧元澳元 欧元英镑 欧元加元 欧元新西兰元

空头仓:

欧元美元 欧元瑞郎 欧元澳元 欧元英镑 欧元加元 欧元新西兰元

EURCHF

多头仓:
欧元美元 欧元日元 EURAUD, 欧元英镑 欧元加元 欧元新西兰元

空头仓:

欧元美元 欧元日元 EURAUD, 欧元英镑 欧元加元 欧元新西兰元

EURAUD

多头仓:
欧元美元 欧元日元 欧元瑞郎 欧元英镑 欧元加元 欧元新西兰元

空头仓:

欧元美元 欧元日元 欧元瑞郎 欧元英镑 欧元加元 欧元新西兰元

USDCHF

多头仓:
美元日元
英镑美元澳元美元欧元美元
空头仓:
英镑美元澳元美元欧元美元
美元日元

USDJPY

多头仓:
美元瑞郎
英镑美元澳元美元欧元美元
空头仓:
英镑美元澳元美元欧元美元
美元瑞郎

AUDCHF

多头仓:
澳元美元 澳元日元 澳元加元
欧元澳元英镑澳元
空头仓:
欧元澳元英镑澳元
澳元美元 澳元日元 澳元加元

EURGBP

多头仓:
欧元美元 欧元日元 欧元瑞郎 欧元澳元 欧元加元 欧元新西兰元

空头仓:

欧元美元 欧元日元 欧元瑞郎 欧元澳元 欧元加元 欧元新西兰元

AUDJPY

多头仓:
澳元美元 澳元瑞郎 澳元加元
欧元澳元英镑澳元
空头仓:
欧元澳元英镑澳元
澳元美元 澳元瑞郎 澳元加元

GBPJPY

多头仓:
英镑加元 英镑瑞郎 英镑美元 英镑澳元
欧元英镑
空头仓:
欧元英镑
英镑加元 英镑瑞郎 英镑美元 英镑澳元

AUDCAD

多头仓:
澳元美元 澳元瑞郎 澳元日元
欧元澳元英镑澳元
空头仓:
欧元澳元英镑澳元
澳元美元 澳元瑞郎 澳元日元

CHFJPY

多头仓:

英镑瑞郎欧元瑞郎,美元瑞郎澳元瑞郎, CAD瑞郎, NZD瑞郎
空头仓:
英镑瑞郎欧元瑞郎,美元瑞郎澳元瑞郎,加元瑞郎,新西兰元瑞郎

CADCHF

多头仓:
加元日元
英镑加元,澳元加元,欧元加元
空头仓:
英镑加元,澳元加元,欧元加元
加元日元

GBPAUD

多头仓:
英镑加元, 英镑瑞郎, 英镑美元, 英镑日元
欧元英镑
空头仓:
欧元英镑
英镑加元, 英镑瑞郎, 英镑美元, 英镑日元

EURCAD

多头仓:
欧元美元, 欧元日元, 欧元瑞郎, 欧元澳元, 欧元英镑, 欧元新西兰元

空头仓:

欧元美元, 欧元日元, 欧元瑞郎, 欧元澳元, 欧元英镑, 欧元新西兰元

EURNZD

多头仓:
欧元美元, 欧元日元, 欧元瑞郎, 欧元澳元, 欧元英镑, 欧元加元

空头仓:

欧元美元, 欧元日元, 欧元瑞郎, 欧元澳元, 欧元英镑, 欧元加元

让我们 开发能够防止在 相反方向建仓的交易过滤系统。 此系统基于所有货币对的 良好交易 一般交易 的基准货币。


请勿建
如果以下交易品种的空头仓交易处于活动状态
如果以下交易品种的多头仓交易处于活动状态

GBPCAD

多头仓: 澳元加元,欧元加元 加元瑞郎, 加元日元
空头仓: 加元瑞郎, 加元日元
澳元加元,欧元加元

GBPCHF

多头仓: 欧元瑞郎,美元瑞郎,澳元瑞郎,加元瑞郎
空头仓:
欧元瑞郎,美元瑞郎,澳元瑞郎,加元瑞郎

GBPUSD

多头仓: 澳元美元,欧元美元 美元瑞郎, 美元日元
空头仓: 美元瑞郎, 美元日元 澳元美元,欧元美元

AUDUSD

多头仓: 英镑美元,欧元美元 美元瑞郎, 美元日元
空头仓: 美元瑞郎, 美元日元 英镑美元,欧元美元

CADJPY

多头仓: 欧元日元,美元日元,澳元日元英镑日元,瑞郎日元
空头仓:
欧元日元,美元日元,澳元日元,英镑日元,瑞郎日元

EURUSD

多头仓: 英镑美元,澳元美元
美元瑞郎, 美元日元
空头仓: 美元瑞郎, 美元日元 英镑美元,澳元美元

EURJPY

多头仓: 加元日元,美元日元,澳元日元,英镑日元,瑞郎日元
空头仓:
加元日元,美元日元,澳元日元,英镑日元,瑞郎日元

EURCHF

多头仓: 英镑瑞郎,美元瑞郎,澳元瑞郎,加元瑞郎,新西兰元瑞郎

空头仓:
英镑瑞郎,美元瑞郎,澳元瑞郎,加元瑞郎,新西兰元瑞郎

EURAUD

多头仓: 英镑澳元
澳元美元, 澳元瑞郎, 澳元日元, 澳元加元
空头仓: 澳元美元, 澳元瑞郎, 澳元日元, 澳元加元 英镑澳元

USDCHF

多头仓: 英镑瑞郎,欧元瑞郎,澳元瑞郎,加元瑞郎,新西兰元瑞郎
空头仓:
英镑瑞郎,欧元瑞郎,澳元瑞郎,加元瑞郎,新西兰元瑞郎

USDJPY

多头仓: 加元日元,欧元日元,澳元日元,英镑日元,瑞郎日元
空头仓:
加元日元,欧元日元,澳元日元,英镑日元,瑞郎日元

AUDCHF

多头仓: 英镑瑞郎,欧元瑞郎,美元瑞郎,加元瑞郎,新西兰元瑞郎
空头仓:
英镑瑞郎,欧元瑞郎,美元瑞郎,加元瑞郎,新西兰元瑞郎

EURGBP

多头仓:
英镑加元, 英镑瑞郎, 英镑美元, 英镑日元, 英镑澳元
空头仓: 英镑加元, 英镑瑞郎, 英镑美元, 英镑日元, 英镑澳元

AUDJPY

多头仓: 加元日元,欧元日元,美元日元,英镑日元,瑞郎日元
空头仓:
加元日元,欧元日元,美元日元,英镑日元,瑞郎日元

GBPJPY

多头仓: 加元日元,欧元日元,美元日元,澳元日元,瑞郎日元
空头仓:
加元日元,欧元日元,美元日元,澳元日元,瑞郎日元

AUDCAD

多头仓: 英镑加元,欧元加元
加元日元, 加元瑞郎
空头仓: 加元日元, 加元瑞郎 英镑加元,欧元加元

CHFJPY

多头仓: 加元日元,欧元日元,美元日元,澳元日元,英镑日元
空头仓:
加元日元,欧元日元,美元日元,澳元日元,英镑日元

CADCHF

多头仓: 英镑瑞郎,欧元瑞郎,美元瑞郎,澳元瑞郎,新西兰元瑞郎
空头仓:
英镑瑞郎,欧元瑞郎,美元瑞郎,澳元瑞郎,新西兰元瑞郎

GBPAUD

多头仓: 欧元澳元 澳元美元, 澳元瑞郎, 澳元日元, 澳元加元
空头仓: 澳元美元, 澳元瑞郎, 澳元日元, 澳元加元 欧元澳元

EURCAD

多头仓: 加元日元,加元瑞郎
英镑加元,澳元加元
空头仓: 英镑加元,澳元加元 加元日元,加元瑞郎

NZDCHF

多头仓: 英镑瑞郎,欧元瑞郎,美元瑞郎,澳元瑞郎,加元瑞郎
空头仓:
英镑瑞郎,欧元瑞郎,美元瑞郎,澳元瑞郎,加元瑞郎

假设 Expert Advisor 采用“良好交易”和“一般交易”组的所有货币对。
让我们根据创建的交易过滤表为 GBPCAD 货币对编写一段代码:

int start(){
//----
   OpenPositions();
//----
   return(0);
  }
//+------------------------------------------------------------------+
void OpenPositions(){
// --- Short Positions
   if (Signal(Symbol()) == -1){
      if (!ExistPositions(Symbol(), OP_SELL, Magic, 0)) OpenPosition(Symbol(), OP_SELL, 1, 0, 0, Magic);
   }

// --- Long Positions
   if (Signal(Symbol()) == 1){
      if (!ExistPositions(Symbol(), OP_BUY, Magic, 0))  OpenPosition(Symbol(), OP_BUY, 1, 0, 0, Magic);
   }
}

int Signal(string Symbols){
//----
   if (... Sell signal condition...){
      if (Symbol() == Symbols){ // Filtration rules for GBPCAD
         // Rules according to base currency
         if (ExistPositions("GBPCHF", OP_BUY, Magic, 0)) return(0);
         if (ExistPositions("GBPUSD", OP_BUY, Magic, 0)) return(0);
         if (ExistPositions("GBPJPY", OP_BUY, Magic, 0)) return(0);
         if (ExistPositions("GBPAUD", OP_BUY, Magic, 0)) return(0);
         if (ExistPositions("EURGBP", OP_SELL, Magic, 0))return(0);
         // Rules according to quote currency
         if (ExistPositions("AUDCAD", OP_BUY, Magic, 0)) return(0);
         if (ExistPositions("EURCAD", OP_BUY, Magic, 0)) return(0);
         if (ExistPositions("CADCHF", OP_SELL, Magic, 0)) return(0);
         if (ExistPositions("CADJPY", OP_SELL, Magic, 0)) return(0);
      }
      return(-1);
   } 
   if (... Buy signal condition...){
      if (Symbol() == Symbols){ // Filtration rules for GBPCAD
         // Rules according to base currency
         if (ExistPositions("GBPCHF", OP_SELL, Magic, 0)) return(0);
         if (ExistPositions("GBPUSD", OP_SELL, Magic, 0)) return(0);
         if (ExistPositions("GBPJPY", OP_SELL, Magic, 0)) return(0);
         if (ExistPositions("GBPAUD", OP_SELL, Magic, 0)) return(0);
         if (ExistPositions("EURGBP", OP_BUY, Magic, 0))  return(0);
         // Rules according to quote currency
         if (ExistPositions("AUDCAD", OP_SELL, Magic, 0)) return(0);
         if (ExistPositions("EURCAD", OP_SELL, Magic, 0)) return(0);
         if (ExistPositions("CADCHF", OP_BUY, Magic, 0)) return(0);
         if (ExistPositions("CADJPY", OP_BUY, Magic, 0)) return(0);
      }   
      return(1);
   }
//----
   return(0);
}

我就不在这里贴出所有交易对的完整代码了。 它们和上述代码非常相似,你可以自己编写。

我希望这个过滤理论可以减少亏损并提高系统的可靠性。



总结

1. 本文中,我们检查了 MQLab™ 图形报表脚本所生成报告的 更详细的参数。

2. 介绍了所有货币对、单独货币对或一组货币对的分析方法。 显示了组合的可能性。

3. 分析了 Expert Advisor 的交易活动,并定义了有利和不利的交易因素。

4. 排除了大量不适用于此策略的货币对。

5. 制定了交易活动的改进措施。