![MetaTrader 5 与 MQL5 提供的无限机遇](https://c.mql5.com/i/articles/overlay.png)
MetaTrader 5 与 MQL5 提供的无限机遇
“要抵达某个地方,您就必须要经历一些事情和过程,否则,您哪也到不了。”
目录简介
1. 交易系统条件
2. 外部参数
3. 参数优化
3.1.第一设置变量
3.1.1. 常规参数与规范
3.1.2. 测试程序设置
3.1.3. 获取结果的分析
3.1.4. 用于优化与测试结果分析的“读书报告”应用程序
3.1.5. 资金管理系统
3.2.第二设置变量
3.3.可能的设置变量
4. 可视化模式下的测试
5. 界面与控件
6. 信息面板 TRADE INFO 与 MONEY MANAGEMENT
7. 图表左侧的交易信息面板
7.1.参数系统
7.2.交易时段时钟
7.3.手动交易
7.3.1. BUY/SELL/REVERSE 部分
7.3.2. CLOSE POSITIONS 部分
7.3.3. SET PENDING ORDERS 部分
7.3.4. MODIFY ORDERS/POSITIONS 部分
7.3.5. DELETE PENDING ORDERS 部分
7.4.交易表现
7.5.账户/交易品种信息
8. EA 要用到的更多指标
总结
简介
本文中,我想举一个例子说明交易者的程序会是什么样子,以及如果从头到始学习 MQL5,9 个月内能达到什么程度。这个例子还会显示出对于一个交易者而言,这样一种程序在占用价格图表最小空间的同时,其功能多样性与信息翔实性如何。而且,我们也会看出,可以通过何种方式,得到颜色多样、清晰明快且对于用户而言直观明确的交易信息面板。从中亦可看出,在保留其最大便利性、以及一次点击即可获取任意系统参数值的功能的情况下,您在系统构建、众多策略或信号组的结合方面能走多远。
我还想就优化参数和测试系统时期待的内容,讲一讲我的观点。我们还会关注设置“资金管理系统”的时机。如果仅使用一个带单一参数的标准指标,该系统最多又能发挥出多大的性能?详尽的交易报告会是什么样子,其多功能性又能达到何种程度?最后,本文会就如何把为自动、半自动与手动交易准备的资源组合到一个程序当中,提出几种思路。
本文论难度,基本属于中等。我所说的中等难度,是指本文定位于那些在研究主题的同时正在寻求信息、且因潜意识中觉得缺少底气而尚未掌握足够技能以着手处理真实交易的人群。本文亦可被视为开发人员所需规范的一个模板。
于此阶段的人群,可能只是缺乏将在下文讲到的某些功能的相关知识,以及读过本文,要在 Jobs 服务中下达订单以实施某诱人理念,甚或是根据编程经验自行完成一些类似的事项。这里不提供代码示例,因为本文本身就已经很长了,而且相关代码的分析也需要在独立的文章中单独论述。
本文可作为 MQL5 资源搭配大量理念的一次演示论述。我会针对某些理念提供相关参考资料,或者更确切地说,是我为了选择系统进一步发展的方向而必须结合考量的模板。
在我们继续之前,我还记得有一次我读一本有关在金融市场中交易的书,其中的一套可盈利系统简单到什么程度呢?它的描述用来匹配您汽车的保险杠都没问题!我试过大量的简单系统,但遗憾的是,或多或少都做不到这一点...但是当然,这并不意味着这种系统根本不存在。 :)
1. 交易系统条件
交易系统条件基于价格图表中的穿越水平。上述水平则通过修改指标价格通道确定。价格穿越时,触发现有仓位购买、卖出或反向的,一共有五个水平。
下面即为价格通道指标图示:
图 1. 经过修改的价格通道指标(5 个水平)
这些水平均会简称如下(自上而下列出):
- H_PCH - 基于柱最大值的水平;
- MH_PCH - 作为价格通道最大值与中间位置之间中点计算的水平;
- M_PCH - 作为价格通道最大值与最小值之间中点计算的水平;
- ML_PCH - 作为价格通道最小值与中间位置之间中点计算的水平;
- H_PCH - 基于柱最小值的水平。
如果此柱全部完成,则某特定水平的穿越会被视为 true。也就是说,您的交易仅采用完成柱。
此系统中现有仓位的开、平或反向的条件,可划分为四组:
- 向上穿越 ML_PCH 水平表明一个买入信号/ 而向下穿越 MH_PCH 水平则表明一个卖出信号。
- 向上穿越 M_PCH 水平表明一个买入信号/ 而向下穿越同一水平则表明一个卖出信号。
- 向上穿越 MH_PCH 水平表明一个买入信号/ 而向下穿越 ML_PCH 水平则表明一个卖出信号。
- 向上穿越 H_PCH 水平表明一个买入信号/ 而向下穿越 L_PCH 水平则表明一个卖出信号。
价格缺口很常见,且应考虑在内。附加条件由此添加到上述条件中,以检查是否真有穿越。
也就是说,比如,一个完整的柱并不暗示穿越,但新柱的开盘价超出了给定水平。事实上,各种不同的情况非常多,一时之间不能面面俱到,所以,交易策略的开发要非常全面。我会在可视化模式下处理交易信号的生成,一步一步地仔细分析历史数据的各个不同部分。
上面列出条件的每一种,都会作为作为一个单一的交易策略、在不与其它条件重合的情况下独立运作。EA 利用 幻数追踪某特定仓位所属的组。在 MetaTrader 5 中,每个交易品种只能有一个仓位,这样一来,打开一个已有一个基于某条件的持仓位置的子仓位,则会从根本上增加或减少总体持仓量。
要熟悉该问题,并查看此类事项实施的相关代码,您可以阅读下述文章:《通过指定的幻数计算总持仓量的最佳方法》与《在单一工具上使用不同的 EA 交易进行交易时 ORDER_MAGIC 的使用》。继上述文章的讨论之后,那里有一位作者列出的、需要进一步改善的几个问题要点。
(我所发现的)子仓位交易量可能记录有误的所有可能情况,均已得到解决。
下述即为交易量可能记录有误的几种情况:
- 利用 EA 中没有的一个幻数平一个或所有仓位。
- 利用终端的标准资源平一个或所有仓位。幻数在这种情况下是缺失的。
- 通过止损或获利平仓。
- 通过止损、获利或挂单(带或不带其它幻数),在无连接期段内平仓。
- 该 EA 由全局变量的值引导。如将这些值删除,该 EA 就会恢复为相同的值,以保证正确的记录。
- 重新编译程序,移除图表后再恢复,删除 EA 后再下载相同的 EA,重启终端或计算机。
在上述所有情况下,该 EA 都会重建正确的子仓位交易量记录。利用现有的方案,该 EA 的开发目的,是要考虑到可能导致错误记录的任何其它情况。我将这种方案命名为幻点。:) 而且,我觉得这个议题足够另写一篇进行讨论。
止损与获利水平针对每一个子仓位进行设置。而且,由于这些水平仅可设置一次,而本质属性相同的挂单,则会在某仓位替代止损及获利打开时进行设置,前提是这里有一个永久性的互联网连接。也就是说,如果某子仓位(比如 BUY)基于某特定条件打开,则带有相同交易量的挂单就会立即设置。
止损被挂单 Sell Stop 替代,而获利则被挂单 Sell Limit 替代。如果与特定子仓位相关的订单在服务器端无连接期间付诸实施,则反方向的挂单会被删除。如果这种无连接周期继续,则结果很难预测。有鉴于此,必须要有永久性的互联网连接。
您可以由此确保最大程度上的控制。比如说,备份连接解决方案或 VPS。关于不可抗力事件情况下要采取的其它的一些安保措施,我还会再讲几句。
VPS (虚拟专用服务器)或 VDS (虚拟独立服务器)代表的是为用户提供所谓“虚拟专用服务器”的服务。
下面所示为第一个条件(M_PCH 穿越)被满足时的一个示例,其中 BUY 仓位(左)和 SELL 仓位(右)均已打开:
图 2. 第一个条件触发的建仓
如果建仓的同时,止损(挂单)出现,则挂单获利会被立即移除。如果获利出现,则止损亦以相同方式被移除。与之类似,该算法适用于所有其它子仓位。
每个子仓位都有自己的止损与获利水平设置,而 EA 会在不需要这些挂单时将其移除。如果在已有子仓位的情况下反向条件被满足,则会出现反向。与前一个子仓位关联的挂单会被移除,并针对新的子仓位重新设置。
下例所示为第二个条件(ML_PCH/MH_PCH 的穿越)触发的 BUY 仓位(左)与 SELL 仓位(右)的建仓。
图 3. 第二个条件触发的建仓
下例所示为第三 (BUY - MH_PCH / SELL - ML_PCH) 与第四 (BUY - H_PCH / SELL - L_PCH) 条件触发的建仓:
图 4. 第三个条件触发的建仓
图 5. 第四个条件触发的建仓
为更好地可视化追踪信号,价格通道 指标已被进一步拓宽。下图所示为已启用所有信号选项的指标:
图 6. MultiSignals_PCH 指标
该版本的指标可于代码库(MultiSignals_PCH 指标)中找到。那里还有它的详细描述。在这里,我们要注意的只是:可以禁用任何信号以令其不再显示于图表当中。其用处可能会在通过 EA 构建操作环境时得到证实,下文将有相关论述。
如果对于此系统的控制完全丢失,进而导致大部分甚至整个账户的损失,则上述方案无力阻止这一情况。它完全取决于您断开连接的时间长度,以及参与交易的存款额度。
实际上,这种情况可能很少发生,但在涉及到资金的方面,安保措施永远都不嫌多,您应当最大程度地针对各种不同的情况做好准备。过高估计总比估计不足要好一些。要让自己免受此类不可抗力事件伤害,您只需要设置真实的止损与获利水平。它们的设置分寸,既要不干扰到 EA 的操作,又要只在控制丢失时出现。换而言之,可称其为一个“安全缓冲”。
即,所有子仓位的挂单,始终都设置为止损和获利水平,而真实的止损/获利水平,则要设置为两方都超出最远的挂单。真实的止损与获利水平可设置为挂单中的相同水平,因为,如在不利用它们的情况下设置挂单,则一旦挂单被触发,该仓位就会失去保护。下图是上述内容的一个很好的展示:
图 7. 用作“安全缓冲”的止损/获利
当然,如果互联网连接就在您的眼前丢失,您就可以立即联系经纪,并通过电话完成必要的交易。但如果您的交易系统被设置为全天候交易,那么上述方法正好适合您,它能在您不在附近的情况下,保证您站在安全这一边。它非常的简单有效。
2. 外部参数
EA 外部参数中的止损与获利值,都针对每个信号组单独实施优化。MultiSignals_PCH 指标期段及其值计算所凭的时间表,也可以针对每个组实施单独优化;但是,也有可能按所有组常用的方式来优化这些参数。
在做出有关 EA 开发方案的决定之前,我读过几篇文章,而它们的作者在其中都提供了多货币交易系统开发机制的相关示例。Nikolay Kositsin 在 《创建一个在若干工具上交易的 EA 交易》中讲了一套便于掌握的方案。而 Vasily Sokolov 则在《在交易模块基础上创建多重 EA》中,提出了一种采用 OOP 的、更加复杂的方案。
下表中配有一个经过缩减的 EA 参数列表,分别针对一个交易品种 (SYMBOL_01) (此版本的 EA 配有 3 个交易品种)、一个交易策略 (TS_01) 或一组信号(此版本的 EA 对于每个交易品种有 4 组)。前缀 01 表示与交易品种序列号的关联,不要在相当多的参数中弄混淆。
变量 | 值 |
---|---|
尝试次数 | 3 |
滑点数 | 100 |
================================== SYMBOL_01 | |
01 _ On/Off Trade | true |
01 _ Name Symbol | EURUSD |
* * * * * * * * * * * * * * * * * * * * * * * * * * * | |
01 _ On/Off Time Range | false |
01 _ Hour of the Start of Trade | 10 : 00 |
01 _ Hour of the End of Trade | 23 : 00 |
01 _ Close Position in the End Day | false |
01 _ Close Position in the End Week | true |
* * * * * * * * * * * * * * * * * * * * * * * * * * * | |
01 _ Period PCH (total) | 0 |
01 _ Timeframe (total) | 1 小时 |
---------------------------------------------------- TS_01 | |
01 _ Trade TS в„–01 | true |
01 _ Timeframe (sub) | 1 小时 |
--- | |
01 _ ## - Type Entry | #1 Cross ML up/MH dw |
01 _ Period PCH (sub) | 20 |
01 _ ## - Type Take Profit | #1 - Points |
01 _ #1 - Points | 250 |
01 _ ## - Type Stop Loss | #1 - Points |
01 _ #1 - Points | 110 |
---------------------------------------------------- TS_02 | |
---------------------------------------------------- TS_03 | |
---------------------------------------------------- TS_04 | |
================================== SYMBOL_02 | |
================================== SYMBOL_03 | |
---------------------------------------------------------------------- ## | >>> 资金管理 |
Fix Lot | 0.1 |
Money Management On/Off | true |
Start Deposit | 10000 |
Delta | 1000 |
Start Lot | 0.1 |
Step Lot | 0.01 |
Stop Trade | 5000 |
--- | |
Max Draw Down Equity (%) | 50 |
Stop Trade by Free Margin ($) | 3000 |
Stop Loss/Take Profit by Disconnect (p) | 15 |
---------------------------------------------------------------------- ## | >>> 优化报告 |
Condition of Selection Criteria | AND |
01 _ Statistic Criterion | 盈利 |
- 01 _ Value Criterion | 0 |
02 _ Statistic Criterion | 盈利系数 |
- 02 _ Value Criterion | 2 |
03 _ Statistic Criterion | NO_CRITERION |
- 03 _ Value Criterion | 0 |
04 _ Statistic Criterion | NO_CRITERION |
- 04 _ Value Criterion | 0 |
05 _ Statistic Criterion | NO_CRITERION |
- 05 _ Value Criterion | 0 |
---------------------------------------------------------------------- ## | >>> 插件参数 |
Use Sound | true |
Color Scheme | 灰绿色 |
完成其外部参数制作后,您基本上可以添加任意数量的交易品种和交易策略;这里要考虑的主要事情,就是参数的数量要在交易终端 (MetaTrader 5) 的开发人员设置的限度之内 (MetaQuotes) ,不得超过 1024 个参数。
现在,我们来详细看看 EA 的所有参数:
EA 参数的描述 | |
---|---|
Number Of Try (尝试次数) | 交易操作失败情况下重复尝试的次数。举个例子,也就是说,如果上一次尝试失败,EA 会按某时间间隔再次尝试建仓。此举适合于所有的交易操作。 |
Slippage (滑点数) | 价格允许的滑点数。也就是说,如果建仓时出现滑点数,则操作会被取消。如您是较短时间框架的交易,则很可能用到此参数。 |
On/Off Trade (开启/关闭交易) | 针对某指定交易品种启用 (true)/禁用 (false) 交易。 |
Name Symbol (交易品种名称) | 交易品种的名称。此名称的输入方法,与交易终端 Market Watch (市场报价)窗口中的一样。 |
On/Off Time Range (开启/关闭)时间范围 | 针对指定时间范围启用 (true)/禁用 (false) 交易。 |
Hour of the Start of Trade (交易开始时刻) | 交易可以开始的时刻。 |
Hour of the End of Trade (交易结束时刻) | 允许交易的最后时刻。 |
Close Position in the End Day (结束日平仓) | 某仓位会在结束日平仓的模式的启用 (true)/禁用 (false) 。 |
Close Position in the End Week (结束周平仓) | 某仓位会在结束周平仓的模式的启用 (true)/禁用 (false) 。 |
Period PCH (total) (期段 PCH (总)) | 如果该值设置为大于零,则其会被作为此交易品种所有交易策略中指标的一个通用参数。 |
Timeframe (total) (时间表 (总)) | 如果 Period PCH (total) 的值大于零,该指标就会采用此时间表的值。 |
Trade TS в„–01 | 启用 (true)/禁用 (false) 与此交易策略相关的交易。 |
Type Entry (进入类型) | 指明此交易块中要使用的信号组。 |
Period PCH (sub) (期段 PCH (子)) | 如果Period PCH (total) 的值为零,则该值会被用于此交易策略中的指标。 |
Type Take Profit (获利类型) | 指明要在此交易策略中使用的获利类型。当前的 EA 版本中有两个选项:NO TAKE PROFIT (无获利)与 Points (点数)。也就是说,不采用 Take Profit 且将 Take Profit 设置为指定的点数。 |
Points TP (获利点数) | 指明此交易策略中获利水平的点数距离。 |
Type Stop Loss (止损类型) | 当前的 EA 版本中有两个选项:NO STOP LOSS (无止损)与 Points (点数)。也就是说,不采用 Stop Loss 且将 Stop Loss 设置为指定的点数。 |
Points SL (止损点数) | 指明此交易策略中止损水平的点数距离。 |
Fix Lot (固定手数) | 固定的手数值。如果 Money Management On/Off 参数设置为 false,则取该参数为已交易手数量。 |
Money Management On/Off (资金管理开启/关闭) | 启用 (true)/禁用 (false) “资金管理系统”。如将其设置为 false,则交易会按一个固定手数值执行,而该值在 Fix Lot 参数中指定。 |
Start Deposit (存款起点) | “资金管理系统”中交易手数计算的起始点。 |
Delta (增量) | 表示为金额的一个值,账户按此增加/减少,之后,交易手数亦按此增加/减少。 |
Start Lot (手数起点) | 交易手数进一步增加/减少所依据的初始手数。 |
Step Lot (手数梯级) | 手数的梯级。交易手数按其增加/减少的值。 |
Stop Trade (停止交易) | 如果存款低于该值,则交易停止。 |
Max Draw Down Equity (%) (净值最大亏损百分比) | 如果存款降至该值,交易就会停止,而且出于安全考虑,会将该 EA 从图表中移除。移除后,描述移除原因的相关条目就会添加到日志中。测试或优化参数时,此规则亦适用。 |
Stop Trade by Free Margin ($) (按可用预付款停止交易) | 在交易(买/卖)之前执行一次计算,以查看其是否会导致款项降低到该值之下的水平;如果是,则此交易不会执行。 |
Stop Loss/Take Profit by Disconnect (p) (按断开连接止损/获利) | 真实的止损与获利。它们的设置超出了当前交易的上限和下限范围。 |
Condition of Selection Criteria (准则选定的条件) | 待选的选项有两个:AND 与 OR。将它们应用于 OPTIMIZATION REPORT 参数块中的准则,以定义如何选择优化结果写入某文件。如果选定 AND,则要满足所有指定条件。如果选定 OR,则至少要满足指定条件中的一个。 |
Statistic Criterion (统计准则) | 允许选择一个参数,以生成要写入文件的优化结果过滤条件的一个下拉列表。
|
Value Criterion (值准则) | 写入文件的优化结果过滤所基于的条件(限制)值。 比如说,如果您在 01_Statistic Criterion 参数中选择 Profit,且将 01_Value Criterion 设置为 100,同时,在剩余的 Statistic Criterion 参数中选择 NO CRITERION,则只有交易数量大于 100 的优化结果会被写入文件。 |
Use Sound (使用声音) | 启用 (true)/禁用 (false) 交易操作相关的声音提示系统。每个事件/事件组都有自己的声音。下述事件均有声音可用:
|
颜色方案 | 价格图表的颜色方案。图表的颜色方案,可从包含 8 个可用颜色方案的下拉列表中选择。
|
我们应指出由 EA 处理的、与第一个参数 (Number Of Try) 有关的事件。
有一些在交易前验证,有些在交易之后验证,为安全起见,其它的则在前后都有验证。
- 发送交易请求失败。
- 价格已变更。
- 请求被拒绝。
- 请求被交易者拒绝。
- 请求处理错误。
- 无效的请求交易量。
- 无效的请求价格。
- 无效的请求止损。
- 无效的请求。
- 交易不被允许。
- 市场已收盘。
- 请求执行的款项不足。
- 价格已变更。
- 请求过多。
- 服务器不允许自动交易。
- 客户端不允许自动交易。
- 请求处理受阻。
- 没有到交易服务器的连接。
- 仅允许真实账户操作。
- 挂单数量已达极限。
- 此交易品种的订单与持仓量已达极限。
我认为此议题亦需另撰一文讨论。
3. 参数优化
EA 框架允许准备各种各样的交易设置。作为最少配置的 EA (即 3 个交易品种、每个交易品种包含 4 种交易策略)示例,我们来探讨两种主要的变量。
为 _ Name Symbol 参数赋予不同的值 (01,02,03)。例如,EURUSD、AUDUSD、USDCHF。也就是说,它们会成为交易的货币对。
- 将所有交易品种的 Period PCH (total) 值设置为大于零,由此传达给程序:MultiSignals_PCH 指标的期段将是每个交易品种中所有策略共用,而指标的时间表,则取自 Timeframe (total) 参数,也就是说,它也会是共用的。
- 每个策略都有其自身的 Type Entry 参数。
- 止损与获利参数亦针对每一个策略单独设置。
上述所有内容,通过下图方案即可明确表述:
图 8. 第一设置变量的方案图
现在,我们要为每个参数的优化设置步骤。比如说,可以按照下表中提供的值进行设置。要为所有交易品种和交易策略块输入这些值。将 Timeframe (total) 参数值设置为 8 Hour (8 小时)。有关仅开盘价模式下测试特性的详细信息,则会在下方的 Tester Settings (测试程序设置)中给定。
还要注意的是,已经禁用“资金管理系统”,即,使用固定手数 (0.1)的参数须进行优化。Money Management On/Off 应设置为 false。“资金管理系统”参数应在所有其它参数设置完毕后单独设置。
变量 | 开始 | 步骤 | 停止 |
---|---|---|---|
Period PCH (total) | 5 | 1 | 30 |
Points TP | 50 | 10 | 800 |
Points SL | 50 | 10 | 200 |
我们来看看下述五大要点:常规参数与规范、测试程序设置、获得结果的分析、读书报告应用程序以及资金管理系统。这五大要点适用于所有设置变量,但由此而来的详细审查,却仅于此(第一)变量描述中提供。
将 Max Draw Down Equity (%) 值设置为 50。它会过滤并停止那些将在优化过程中最大亏损显示低于 50% 的传递。它还会略微提高一点优化速度,无需在传递无“值”上费功夫。
参数应针对每个交易品种单独优化。这是一种强制措施,因为只要传递的优化数量超过 64 位长度值,优化就会因交易终端开发人员设置的限制而变得不可能。所有强加限制的相关信息,都可以在交易终端的 Help 部分中找到。
在交易终端测试程序的 Settings 选项卡中,如下所示设置参数:
图 9. 策略测试程序参数
比如说,该测试期段可设置为 ~ 1 year (约 1 年)长。您可以设置任何交易品种,因为不管 EA 运行于哪个交易品种,交易都会针对 EA 参数中指定的那些交易品种执行。
将优化类型设置为 Fast (genetic algorithm) (快速(遗传算法))。
本例中,我们将优化准则设置为 Balance Max,即最大余额值。
在优化/测试模式列表中,选择 Opening prices only。它会按最低质量等级提供,但这对于参数优化已经足够了,前提是 EA 仅于已完成柱交易。优化之后,最好是在更高质量模式下进一步检验结果。还要记住一个重要的事情。
由于 Opening prices only 内部机制的独特性,参数优化过程中不能涉及到时间表。这与该模式不允许由所有时间表获取数据(会导致优化/测试错误)有关。
有关限制的更多详情,请参阅 Client Terminal - User Guide -> Strategy Tester -> Working with Tester -> Generation of Ticks (部分:Opening Prices Only)。在 Opening prices only 模式下优化参数时,您还要遵守下述规范:
- 如果所有交易品种的时间表不同,则每一个交易品种都要单独优化。也就是说,要禁用其它所有交易品种 (FALSE)。
- 如果各交易品种的时间表不同,那么,一旦针对所有交易品种的优化完成之后,就要在 M1 上 OHLC 模式下运行检验。
- 如果优化/测试仅涉及到一个交易品种,则要在测试程序设置中设定的时间表,应为追踪止损中使用的最短时间表,或者比它还短。
如果忽略这些规范,则 M1 上的 OHLC 模式即为参数优化之最佳选择。在不同的模式下运行测试并对比结果,也会颇有益处。
在一台双核处理器 PC 上运行此优化,大约会耗时 4-5 小时(就该设置而言)。
连续优化每一个交易品种的参数之后,要在 Optimization chart (优化图表)选项卡中对整体优化结果进行分析,以选择将参与交易的参数。
比如说,上面列出的设置,就生成了下述 EURUSD 结果:
图 10. 测试程序 优化图表 选项卡中的优化结果
从该优化图表可以看出,结果的主要部分位于盈利区域。盈利区域中显示的结果越多,就越能确定交易系统会利用来自盈利区域的特定参数进一步返回相同的结果。
还要注意的是,与盈利区域内结果数量准则结合的测试周期越长,确定程度就越高。但是,周期越长,优化所需的时间也就越长。这种情况下,您可以求助于 MetaQuotes 提供的 MQL5 云网络。花一点点钱,优化时间就会缩短很多倍 - 因为会有大量的处理器参与到优化过程。有关这一绝佳功能的更多详情,请参阅《利用 MQL5 云网络加快计算》一文。如果决定利用 M1 上的 OHLC 模式运行优化,该选项也是相当方便。
如果获取到的与任何特定交易品种相关的优化结果出于某种原因不够好,那么您就要尝试运行不同交易品种的优化。确定哪些结果被认为可接受所依据的准则,大致如下所述。比如说,最大亏损不得超过 20 个百分点。照此说法,回收系数的值不得小于 2.00。止损水平的距离要小于获利水平的距离,如此等等。
MetaTrader 5 提供了几种结果分析工具。上述的优化图表则被称为结果图。此外,还有线条 (1D)、平面 (2D) 及三维 (3D) 图形。以下为 USDCHF 与 EURUSD 在 三维 (3D) 图形上的测试结果:
图 11. 3D 图上的 USDCHF 优化结果
图 12. 3D 图上的 EURUSD 优化结果
由三维图可以清楚地看出,针对 MultiSignals_PCH 指标(浅绿色分布图区域)的参数值相当多,伴随适于交易的止损水平的不同值。
一旦为每个交易品种选定参数之后,您就要运行一次同时包含所有交易品种的测试,并对结果进行分析。测试程序中的 Graph (图形)选项卡,会像下面第一个图中所示一样显示结果。Opening prices only 模式中的测试时间非常短。一次 1 年周期的测试,仅会耗时 5 秒左右即可完成(参见下图)。
图 13. Opening prices only 模式下的测试结果(第一设置变量)
基本来讲,如果使用的是 Every tick (每一价格变动)模式,则结果会相同。
其可能优于或劣于 Opening prices only 模式,但无关紧要。本例中,测试完成大约用时 12 分钟(参见下图)。
图 14. Every tick 模式下的测试结果(第一设置变量)
M1 上 OHLC 模式中,本测试约耗时 1 分钟。
BOOK REPORT(读书报告)应用程序是作为 EA 的一项补充提供的。该应用程序采用 VBA 程序语言编写而成。实际上,它就是一个标准的 Excel 工作簿,只需在您的 PC 上安装 Excel 2010 即可使用。我们来深入了解一下,BOOK REPORT 应用程序提供了哪些内容。
此工作簿仅有一个 File (文件)选项卡,而该选项卡提供三个选项备选:Recent (最近)、New (新建)及 Print (打印)。关于 Excel,就只剩下这些了。:) 其余的都被移除,而对于获取优化与测试结果进行分析的主要步骤,均已实现自动化并完成了最大程度的简化。
图 15. Excel 2010 中的 BOOK REPORT
默认情况下,此工作簿已经包含了优化与测试数据,以供初步了解该应用程序使用。
如下图所示:
图 16. 优化结果数据
在 OptReport 工作表中表格的顶部,您可以看到下述按钮:CONNECT DATA、DIAGRAM、CROSS HAIR 以及 FULL SCREEN MODE。
FULL SCREEN MODE (全屏模式)按钮后接向右的箭头按钮,允许在不需要向下滚动的情况下快速跳至表格末尾。包含优化过程中所涉参数数据的列,都位于表格末尾处;而且,您还能看到一个允许快速跳至表格开头(位于数据表右上方)的按钮。
数据经过过滤,且可以按照降序或升序排列。为方便阅读显示为水平条形或色阶的数据,每一列都被格式化。现在,我们来看看表顶部的每一个按钮:
- CONNECT DATA (连接数据)。如您单击此按钮,就会出现一个要求 specify the import data file path (指定导入数据文件路径)的对话框。BOOK REPORT 应用程序会尝试找到终端公共目录的路径。
比如说,在 Windows 7 中,路径会是:C:\ProgramData\MetaQuotes\Terminal\Common\Files\
而在 Windows XP 中则是:C:\Documents and Settings\All Users\Application Data\MetaQuotes\Terminal\Common\Files\
如路径未被找到,则可由用户指定。(继 EA 交易 TRADING WAY 参数的首次和后续优化之后,)该终端公共目录下的 Files 文件夹中就会创建一个 DOR 文件夹;而反过来,冠以 EA 名称的 EA 文件夹,也会于 EA 文件夹中生成 OPTn 文件夹前(n 为某 OPT 文件夹的编号)在 DOR 文件夹中创建。在 OPT 文件夹中,EA 会生成包含优化结果的 DOR.csv。这就是我们要导入到 OptReport 工作表中的文件。
尝试打开不同名称或扩展名的文件会失败,随后又会在一个对话框中显示相关的警告。
如果尝试打开一个带有不同数据结构的文件或零长度文件,也会导致一个带有相关警告的对话框出现。如果选择了正确的文件,则当前的 OptReport 数据会被移除,且用来自该文件的数据替代。整个过程只有几秒钟。
- DIAGRAM (图解)。单击此按钮,您就会进入 Diagrams 工作表。比如说,OptReport 工作表的 Profit 列中的数据是按降序排列,那么,您将看到大致如下所示的图片:
图 17. 图表中结果数据的优化
图表下方,有一个内含报告中出现的所有参数相关描述的表。此表左列中的参数名称,均会链接到 OptReport 工作表中的相关列。各参数的完整列表如下所示:
- PROFIT (盈利) - 测试结束时的净利润;
- TOTAL DEALS (总成交) - 已执行交易的数量;
- PROFIT FACTOR (盈利系数) - 总盈利与总亏损交易的比率;
- EXPECTED PAYOFF (预计获利) - 盈利的数学期望值;
- EQUITY DD MAX REL% (净值亏损最大相对百分比) - 以百分比表示的最大净值亏损;
- RECOVERY FACTOR (回收系数) - 以币值表示的净利润与最大余额亏损的比率;
- SHARPE RATIO (夏普比率) - 持仓周期内算术平均回报与于其标准方差的比率;
- EQUITY DD (净值亏损) - 以币值表示的最大净值亏损;
- EQUITY DD% (净值亏损百分比) - 在以币值表示的最大净值亏损时记录的、以百分比表示的净值亏损;
- EQUITY DD RELATIVE (净值相对亏损) - 在以百分比表示的最大净值亏损时记录的、以币值表示的净值亏损;
- EQUITY MIN (最小净值) - 净值的最小值;
- BALANCE DD REL% (余额亏损相对百分比) - 以百分比表示的最大余额亏损;
- BALANCE DD (余额亏损) - 以币值表示的最大余额亏损;
- BALANCE DD% (余额亏损百分比) - 在以币值表示的最大余额亏损时记录的、以百分比表示的最大余额亏损;
- BALANCE RELATIVE (相对余额) - 在以百分比表示的最大余额亏损时记录的、以币值表示的余额亏损;
- BALANCE MIN (最小余额) - 余额最小值;
- MIN MARGIN LEVEL (最低预付款水平) - 所达到的最低预付款水平值;
- GROSS LOSS (毛损) - 所有亏损交易的总损失;
- GROSS PROFIT (毛利) - 所有盈利交易的总利润;
- CONLOSS MAX (连续最大损失) - 连续亏损交易中的最大损失;
- CONPROFIT MAX (连续最大盈利) - 连续盈利交易中的最大利润;
- MAX CONLOSSES (最大连续损失) - 于最长亏损交易系列中的总损失;
- MAX CONWINS (最大连续盈利) - 于最长盈利交易系列中的总利润;
- MAX LOSS TRADE (最大损失交易) - 最大损失 - 所有损失交易中的最大值;
- MAX PROFIT TRADE (最大盈利交易) - 最大利润 - 所有盈利交易中的最大值;
- TRADES (交易次数) - 交易的次数;
- SHORT TRADES - 短线交易;
- LONG TRADES - 长线交易;
- LOSS TRADES - 亏损交易;
- PROFIT TRADES - 盈利交易;
- PROFIT SHORT TRADES - 短线盈利交易;
- PROFIT LONG TRADES - 长线盈利交易;
- LOSS TRADES AVGCON - 连续损失交易的平均长度;
- PROFIT TRADES AVGCON - 连续盈利交易的平均长度;
- CONLOSS MAX TRADES - 在连续损失交易中造成最大损失的交易次数;
- CONPROFIT MAX TRADES - 在连续盈利交易中实现最大盈利的交易次数;
- MAX CONLOSS TRADES - 最长的损失交易系列中的交易次数;
- MAX CONPROFIT TRADES - 最长的盈利交易系列中的交易次数;
图表上方有下拉列表。第一个列表允许选择三个图表中的一个:
- OPT.REPORT DIAGRAM 是如上所示的一个图解。它会显示被写入文件的所有优化结果。此图表有两个轴,所以可以同时按两个参数查看结果。如果此图解是活动的,则包含所有参数的下拉列表,就会显示于右侧图解的上方。
图 18. 显示于优化结果图解上方的下拉列表
单击此图解,即可进入包含自身数据的工作表。本例中是进入 OptReport。
- 下拉列表中的第二种图解,是 PIVOT 3D DIAGRAM (三维数据透视图)。它是一种三维的数据透视图。
图 19. 三维图解中显示的优化结果参数组合
如果此图解为活动的,则您可以在右侧它的上方看到下拉列表,您可以选择优化涉及到的参数(第一与第三列表),以及纵轴的关键参数(第二列表)。
图 20. 三维图解上方的下拉列表
允许围绕着横轴与纵轴旋转图表的控件,位于图解的右下部。单击该图解,即可进入包含主要数据的 OptReport 工作表,但您也可以选择进入图解绘制所依据的数据透视表。图解左上角的 PIVOT TABLE (数据透视表)按钮,会带您进入含有数据透视表的 PivotTable 工作表。
事实上,此图解的每个点都会体现出所有结果的累积效应,且具备查看参数组合的能力。因此,它又为更加详细的分析提供了一项便利功能。图 21. 与三维图解关联的数据透视表
其中包含的这项功能,是在选择一个包含感兴趣数据的单元格后,就会生成一份 TDn 工作表(其中 n 是某个带有 TD 标签的工作表的编号),而一个包含与数据透视表中选定参数相关的所有结果的格式化表格就会显示出来。比如说,如果您选择一个带参数 190 与 100 的单元格,就会生成一个所有结果都匹配这些参数的表。参见下图:图 22. 于参数数据透视表中选择的优化结果表
- TEST DIAGRAM (测试图解)为第三种图解,它会显示出测试涉及到的所有 TS 的余额图表:
图 23. 涉及到系统中所有 TS 的测试结果
每个测试过后,所有的后续 EA 测试结果均置于上一次创建的优化文件夹 OPTn 中创建的 TESTS 文件夹。每个结果均写入一个独立的 testN.csv 文件,其中的 N 为文件编号。
可载入测试结果,以供在 TestReport 工作表查看。此工作表在表顶部的按钮,与 OptReport 的相同。由此,要载入数据,请单击 CONNECT DATA 按钮。除 TS 余额数据外,这些文件中还包含一份与交易终端 Results 选项卡中内容类似的报告。为方便分析,该数据亦经过格式化。
图 24. 交易测试结果
- CROSS HAIR (十字线)。此按钮会启用简单便捷的十字线函数。上图所示为 CROSS HAIR 按钮按下的状态。
- FULL SCREEN MODE (全屏模式)。前面讲过,此按钮会启用/禁用全屏模式。
BOOK REPORT 应用程序拥有几项防止对象意外删除的安全措施。也就是说,您不能选择并因此删除任何对象(按钮、图解、设计元素)。
此应用程序中从不使用的带有大量选项的所有 Excel 上下文菜单,都被移除。现在,就只有两个经过修改的上下文菜单了。
- 右键单击单元格时出现的上下文菜单。现在只有两个选项:Copy (复制)和 Microsoft Word。
- 工作表上下文菜单。剩余的可用选项为:Insert…、Tab Color 和 Delete。
Delete 选项已经过重新编程,让用户不能意外地删除主工作表。尝试删除此类工作表,则会出现一条警告信息,且删除会被拒绝。
设置好所有交易品种的参数并完成获取结果的分析之后,您就要进行“资金管理系统”设置了。
“资金管理”会将账户作为一个整体考虑。根据 Ryan Jones 提出的固定比率资金管理方法,在您可以向某个现有手数添加一手之前,现有手数中的每一手都要“赢得”特定的点数(即 Jones 所谓的“增量”)。比如说,我们有 300 美元的存款,且按最小手数 1 进行交易;也就是说,相同的 300 美元的增量意味着,只有我们赢得(利用我们的最小手数 1) 300 美元,才能提高到最小手数 2。
同样,只有我们按最小手数 2 赢得 300 美元增量之后,手数才能提高到 3。也就是说,最小手数从 2 到 3 的提高,只能在我们向现有的 600 美元再添加 2 С… $300 = $600 (即 $1200 时)的情况下才有可能实现;而最小手数从 3 到 4,则要存款达到 $1200 + ($300 С… 3) = $1200 + $900 = $2100,如此类推。所以,“合约数量与购买新数量的合约所需金额成正比”,此方法亦因此得名。反过来,手数的减少且遵循同一方案。
当然,我们可以运行参数优化,但我们最好还是研究一下手动设置。至于预先测试,您可以使用 Opening prices only 模式或 M1 上的 OHLC。
此“资金管理系统”的默认参数值如下表所示:
参数 | 值 |
---|---|
Start Deposit | 10000 |
Delta | 300 |
Start Lot | 0.1 |
Step Lot | 0.01 |
测试过后,要对获取的结果实施分析。测试结果如下所示:
图 25. Every tick 模式下使用“资金管理系统”的测试结果(第一设置变量)
不要太过关注所得结果中的总利润,因为无论如何它都会较高,原因则是该“资金管理系统”是基于带优化参数的历史数据而应用到系列交易当中的。
更重要的参数则是相对于净值的 Max. deposit drawdown 以及 Min. margin level。EA 中的“资金管理系统”的设置相当灵活,如此才能同时满足保守与激进交易的参数值设置要求。Max. deposit drawdown 与 Min. margin level 则是取决于交易量及交易中所涉存款的参数。
要更好地理解该系统或其它任何系统,都还有一个要点不可回避。如上所示的获取结果表明,最开始时有一系列的成功交易,但并未显示如果交易开始于局部最大值并随后转换到 max. drawdown,又会有怎样的亏损。因此,为来自局部高点、亏损最大的测试设置初始日期亦有用处,要以这些结果为基础,得出您对于“资金管理系统”妥善设置相关问题的最终结论。
- 在此变量中,我们还会为 (01,02,03) _ Name Symbol 赋不同的值。我们以相同的交易品种来运行一次测试,从而能够与之前的变量对比结果:EURUSD、AUDUSD、USDCHF。
- 这一次,将 Period PCH (total) 参数值设置为零,由此传达给程序:MultiSignals_PCH 指标的期限将与所有策略不同。为此,该值将取自每个交易策略块中发现的 Period PCH (sub) 参数当中。为该指标设置其自有的时间表是可能的,但在此变量中,我们会利用每一个交易策略块中的 Timeframe (sub) 参数来始终设置同一值。
- 每个策略都有其自身的 Type Entry 参数。
- 止损与获利参数亦针对每一个策略单独设置。
下图即为如上所述的方案图:
图 26. 第二设置变量
我们为每个参数的优化设置步骤。比如说,可以按照下表中提供的值进行设置。要将这些值输入到所有交易品种和交易策略块中。Timeframe (sub) 参数会被赋予一个固定值。
参数优化期间,“资金管理系统”应予禁用。也就是说,Money Management On/Off 参数应设置为 false。
此(第二)变量与前一个(第一)变量的区别在于,MultiSignals_PCH 指标的期段会针对每一个策略单独挑出,而且针对所有交易策略的优化亦会同时一次性运行。每一次某特定策略优化期间,其它所有策略都要禁用。像前一测试中一样,为所有 TS 设置相同的时间表,即 8 Hour (8 小时)。
参数 | 开始 | 步骤 | 停止 |
---|---|---|---|
Period PCH (sub) | 5 | 1 | 30 |
Points TP | 50 | 10 | 800 |
Points SL | 50 | 10 | 200 |
对于常规参数与规范、测试程序设置、获取结果的分析、BOOK REPORT 应用程序以及资金管理系统的详细描述,请参阅第一设置变量相关内容。这里仅提供测试结果。
每次优化后,每个策略的参数,均基于回收系数的最大值进行选择。
下图所示为带有一个固定手数 (0.1) 的累积结果:
图 27. Every tick 模式下的测试结果(第二设置变量)
现在,我们按第一变量中这些系列交易的设置,来应用“资金管理系统”:
图 28. Every tick 模式下使用“资金管理系统”的测试结果(第二设置变量)
因为主要关注的就是系统的每一个单一元素,所以该变量允许更好地理解和辨识每个信号组的独特性。换言之,您可以使用第二变量看到系统的整个内部机制,而且,如果测试揭示出了其中任何部分的弱点,您就可以试着更改特定参数,或是将其一并移除。此为第二变量所能提供的优势。
此 EA 是以一种不仅仅局限于上述变量的方式开发的。比如说,您可以在 _ Name Symbol (01,02,03) 参数中输入一个交易品种的名称,再运用 12 种交易策略来交易一个交易品种。反过来,交易策略的参数亦可设置为使用不同的时间表。或者是,一个时间表、不同的指标周期。同样亦适用于“止损”与“获利”水平。如果禁用获利或止损,则子仓位会根据某个转向信号或止损/获利平仓。
您可以尝试在不使用止损/获利水平的情况下设置该系统,由此简单地令其转向。这种情况下,此 EA 将诉诸下述机制。建仓与反向的信号块,仍与上文交易系统条件中描述的内容相同。如果价格滑入亏损区域,那么,它还会涉及到平仓。下表列出了在没有任何止损类型挂单与建子仓条件中顺序一致情况下的退出信号:
- 向上穿越 H_PCH 水平以平某个 SELL 子仓位/ 向下穿越 L_PCH 水平以平某个 BUY 子仓位。
- 向上穿越 H_PCH 水平以平某个 SELL 子仓位/ 向下穿越 L_PCH 水平以平某个 BUY 子仓位。
- 向上穿越 M_PCH 水平以平某个 SELL 子仓位/ 向下穿越 M_PCH 水平以平某个 BUY 子仓位。
- 向上穿越 M_PCH 水平以平某个 SELL 子仓位/ 向下穿越 M_PCH 水平以平某个 BUY 子仓位。
第一与第二条件等同。第三与第四条件等同。针对多个时间表的测试表明:如果不存在任何止损类型的挂单,它们就是更加适合的条件。根据此方案,如将一个真实的止损作为“安全缓冲”(Stop Loss/Take Profit by Disconnect (p) 参数)使用,则其会按照此参数中指定的点数进行设置,前提是没有更多与其它子仓位相关的挂单。
如果价格贴近/偏离真实止损 指定点数的 ВЅ,前提是没有更多与其它子仓位关联的挂单,则止损会被修改。也就是说,它会在价格回落时随价格移动指定的点数,并在其逼近时偏离价格。如果某特定策略设置中未指定获利类型挂单,则会按同样的方式获利。为完整模式设置一个“安全缓冲”的原则,在上文的交易系统条件中已有说明。
交易可单独针对每一个交易品种设置一个特定时间范围。交易特定交易品种,很有可能在特定时间条件下最佳。亦存在一天或一周结束时全部平仓的可能性。而在半自动模式下,亦可实现在某特定时间区间结束时平仓。相关内容,我们会下面的交易时段时钟中详述。
此外,您可以利用指标信号,手动简单地优化指标和交易的参数。当然,也有些交易者出于这样或那样的原因青睐手动交易,而且他们的观点和利益也被考虑在内。EA 中的手动交易通过一个便利的交易面板来完成,相关详情请见图表左侧的交易信息面板。
4. 可视化模式下的测试
毫无疑问,策略测试程序中可用的可视化模式值得在这里提一下。
此工具当前仍有一些限制,但希望开发人员会对其做出进一步的改进。现在,尽管有些限制,但可视化模式还是提供了与特定程序入门相关的更为丰富的体验。
进行复杂程序的开发和调试时,亦会用到这一方法。从下图可以看出,测试期间针对当前情况的分析,可以添加哪些工具:
图 29. 可视化模式下的信息面板
图表的左侧包含与上一个已收盘柱、当前服务器时间以及星期几相关的数据。图表右侧则会提供一个针对所有交易品种与策略的敞口子仓表,显示子仓位交易量、买入/卖出信号,以及某特定策略上一个交易执行的价格。
在较低的部分,您能看到“资金管理系统”参数与当前手数,以及当前亏损、总体风险、停止交易以及 SL/TP (“安全缓冲”)水平设置。有关这些参数的更多信息,都会在下一章节界面与控件中讲到。
5. 界面与控件
EA 首次载入到图表,会触发终端全局变量的生成,而 EA 之后会用到这些变量。此类变量非常多 (46)。如果您试图删除任何变量或一次性将其全部删除,则 EA 会恢复其默认值。
图表右侧会出现一个交易信息面板,且 Color Schemes 参数中指定的颜色方案也会应用于后者。您可以从 8 种可用颜色方案(浅色或深色)中任意选择。
从图表右侧缩进的价格,会在 EA 被载入到图表或者图表宽度有改动时自动调整,以使价格不会被面板遮盖。如下图所示:
图 30. 载入 EA 后的图表
6. 信息面板 TRADE INFO 与 MONEY MANAGEMENT
位于图表右侧的交易信息面板由两个块构成:Trade Info 与 Money Management。在块名称的左右、在 Trade Info 块的上方,您都能看到下述图标(从左到右列出):Left Panel(左面板)、Warning Indicator (警告指标)及 Hide All Panels (隐藏所有面板)。如将鼠标指针置于某图标上方,就会出现一个工具提示,且图标的外观有所变化(绿色变成阴影色)。
单击 Left Panel 图标会在图表左侧打开一个交易面板,它的内容,我们稍后再谈。随着交易面板的打开,Left Panel 图标旁边就会出现一个 Left Panel Down/Left Panel Up 图标。它会画出一个三角箭头,指明单击此图标后面板将会移动的方向。
如果没有什么会阻碍此交易,则 Warning Indicator (警告指标)图标为绿色(绿灯)。如果交易受阻,则 Warning Indicator 图标呈红色(红灯)。出现红灯的可能原因如下:
- 没有到服务器的连接。
- 不允许此 EA 交易实施交易。
- 不允许此终端实施交易。
- 当前账户不允许交易。
- 当前账户不允许实施 EA 交易。
如果您在红灯亮起时单击 Warning Indicator 图标,则会在图表左侧出现一条信息,指明交易受阻的原因。下图形象地阐明了 EA 交易当前不被允许交易(终端选项)时的事件。此信息可通过单击 Warning Indicator 图标移除。
您面板的外观,也会通过利用任何采用 alpha 通道的图形编辑器、向面板添加的阴影或任何其它效果而得到增强。
图 31. 说明交易受阻原因的信息
单击 Hide All Panels (隐藏所有面板)图标会将所有打开的面板最小化,保留图表右下方的 SHOW (显示)按钮的活动状态,再通过单击该按钮,快速将之前自定义的工作空间最大化:
图 32. SHOW 按钮
Trade Info 面板配有一个包含某些交易参数的列表。其中,包含函数的参数呈MediumSeaGreen(适中的海洋绿)色显示。也就是说,如果您单击参数的名称,其所包含的函数就会执行,且名称变蓝。反之亦然,如果单击蓝色名称,则一切都恢复其初始形态。
下表会提供对于 Trade Info 面板参数及其函数的详细描述:
TRADE INFO 面板参数列表 | |
---|---|
Account Equity - 账户资产净值 ($) | 当前净值额度。如其高于余额,则此值呈绿色显示。如其低于余额,则此值呈红色显示。 |
Total Positions - 总持仓 | 目前的持仓数量。 |
Total Orders - 总订单 | 目前的挂单数量。 |
Loading Deposit - 载入存款 (%) | 交易中使用的净值额度,以百分比表示。 |
~Total Risk/Real Profit - 大约的总风险/实际利润 (%) | 存款/实际利润的总风险。此为计算得出的最坏情况下可能损失的净值数额。其为约略值,因为开盘价仓位与实际止损水平之间的挂单并未考虑在内。如果计算是在充分考虑到挂单的情况下完成的,则风险会较低,因为交易系统会在开盘价和止损水平之间下达挂单作为其它子仓位的保护性水平。如果实际止损看起来高于开盘价,则此参数会指明一个实际受保护利润,并呈绿色显示。它默认以百分比表示。如果您单击名称,则参数会以币值表示,且其名称会变蓝。单击此蓝色名称,则会将一切恢复为其初始样式。 |
Current Size Lots - 当前交易手数 | 自动交易模式下使用的当前交易手数。 |
Stops Level (p) - 止损水平 | 它会显示当前交易品种的止损水平值,以点数表示。如果您单击名称,其颜色就会变化,而代表止损水平的水平点划线将于图表中显示。止损水平会随价格变动。 |
Freeze Level (p) - 冻结水平 | 它会显示当前交易品种的冻结水平值,以点数表示。 |
Spread Is Float (p) - 点差浮动 | 它会显示当前工具的点差值。如果点差为浮动,则会显示 Spread Is Float,否则只显示 Spread。通过单击名称,就会将 Ask 线添加到图表或从图表移除。 |
Swap Long (p) - 买入持仓库存费 | 当前交易品种的买入持仓库存费。 |
Swap Short (p) - 卖出持仓库存费 | 当前交易品种的卖出持仓库存费。 |
无需此表,更方便地描述 Money Management 块的参数。Money Management 块分为三部分。上部包含两列:BALANCE (余额)和 VOLUME (交易量)。BALANCE 列会显示交易手数增加或减少时的余额水平,前提是 Money Management 系统已启用 (true)。VOLUME 列会显示手数增加/减少的交易量。如果系统降至最小手数,则会有一条红色信息取代交易量,比如:Not Less Than 0.01 (不得小于 0.01)。如果 Money Management 系统被禁用 (false),则块中此部分的所有值都会是零。
“资金管理系统”参数显示于 Money Management 块的中央位置。参数的描述,请见上面的EA 参数描述表。这些参数的值在交易过程中不得改动,只能在 EA 的外部参数中改动。
在 Money Management 块靠下的部分,您可以看到与风险管理相关的参数。它们的描述,亦可在上面的EA 参数描述表中找到。这里要注意的是,斜杠后方Max Draw Down Equity (%) 值的右侧部分是设定的限制,而斜杠前方的左侧部分,则是相对于净值的当前账户亏损。
一旦达到设定的账户亏损限制,所有敞口仓位均会平仓,如有挂单,也都会被移除。达到亏损限制后,参数值就会呈红色显示。例如:! 22.01/20.00 !。这表明亏损限制被设定为 20%,而当前亏损已经是 22% 了。
如果买进/卖出之后,Trade Info 块中的 Current Size Lots 参数指明的可用资金变为小于或等于设定值,则 Stop Trade by Free Margin ($) 亦呈红色。例如:! 5000 !。在款项足够执行这些交易操作之前,EA 都不会执行交易。
列表中上一个参数的值,SL/TP by Disconnect (p),会显示出 EA 中设置的点数,或者是文本 FALSE - 意味着如在 EA 中将其设置为零,则会禁用此参数。如将此参数设置为零,则会在没有实际止损与获利的情况下建仓。
按这种说法,如果未针对某仓位设定止损,则Trade Info 块中的 ~Total Risk/Real Profit (%) 值会拥有 !100.00 ! - 表明全部存款都处于风险状态 (100%)。如将该参数设置为显示一个币值,即 ~Total Risk/Real Profit ($),则该值会显示当前净值水平。例如: ! 7698.54 ! .
7. 图表左侧的交易信息面板
现在,我们来看一看图表左侧的交易信息面板,它会在单击 Trade Info 块上的 Left Panel 图标时出现。面板标题的左侧,有五个可用于移至另一面板单元的图标。
- 参数系统。
- 交易时段时钟。
- 人工交易。
- 交易表现。
- 账户/交易品种信息
接下来,我们将上述每一条都展开来讲。
如已启用 Parameters System (参数系统),则此面板如下所示:
图 33. 参数系统
所示表格有七列。不包含任何函数的列标题呈黄色显示。而包含函数的列标题则呈适中的海洋绿色显示。
如果某特定交易品种不允许交易,则整个交易策略块都会呈灰色显示。如果某特定交易品种允许交易、但特定的交易策略不允许用于交易中,则只有那些不允许在交易中使用的策略会呈灰色。
- SYMBOLS (交易品种)。 第一列中包含由 EA 交易的交易品种的名称。由于每个交易品种都可以利用四组信号/策略进行交易,此表的布置格局亦直观且方便使用。也就是说,交易品种下方的横杠是指已有某特定策略与上面指出的交易品种关联。单击交易品种名称,会将您带到相同名称的交易品种。首先针对某特定交易品种显示的时间表(即在同一行中)会按默认设置。当前交易品种会变蓝。与给定交易品种相关的整个交易策略块会高亮显示。上图中清晰可见(当前交易品种为 AUDUSD)。
SHOW ORDERS (显示订单)。第二列会显示出建子仓时使用的策略、其交易量以及方向。如果没有子仓位,则会显示 EMPTY (空)。如有已建子仓,则会显示其交易量。方向靠颜色识别。买入持仓的交易量 (Long) 呈绿色显示(例如:0.05),卖出持仓 (Short) 则呈红色(例如:0.02)。该列还配有复选框,勾选即能查看挂单与某特定子仓位有什么关联。勾选与某子仓位对应的框后,各挂单下方就会出现水平实线,而且,此子仓位的进入点,会作为同一颜色的一条垂直点划线显示。您可以同时勾选所有框。这些线很难混淆,因为每个订单组都有自己的颜色。请参阅右图。
如您转为另一交易品种,则复选框不会被清除。待您返回后,只要之前相应框已勾选,则线条会再次显示于图表上方。假如某仓位平仓,则与该子仓位相关的线条会被 EA 从图表中移除,且复选框亦被清空封锁。此列的标题可以点击。也就是说,如果没有已勾选框,则名称会呈适中的海洋绿色显示。如果至少有一个已勾选框,则名称呈蓝色。- TYPE SIGNAL/TRADING STRATEGY (信号/交易策略类型)第三列显示的是 EA 参数中选定了哪些信号/交易策略。如果您单击某信号名称,就会将一个指标应用于某策略交易信号得以生成的图表,而且其名称会呈蓝色显示。在某指标已应用于图表的情况下,如果您单击另一信号名称,指标就会被点击信号的指标取代。通过图表,您就会看到应用于图表的某指标所需的交易品种和时间表。
- TIMEFRAME (时间表)。此列(第四列)会显示某策略交易信号得以形成的时间表。单击某个时间表名称,您就会看到该特定时间表,且该时间表名称呈蓝色显示。当前块/交易品种中所有带相同时间表的名称,亦变成蓝色显示。如您单击位于另一块/交易品种的时间表名称,则当前交易品种亦会变化。如果某指标是在单击某时间表名称时应用于图表,则会更改该指标以匹配交易品种、时间表及策略。
- PERIOD INDICATOR (指标周期)。第五列会显示 EA 外部参数中设定的指标周期。如果某指标已应用于图表,则周期会呈蓝色显示。您可以看到周期旁边的复选框。如您勾选与当前需要分析的时间表及交易品种对应的框,再单击列标题,就会在图表底部出现一个子窗口,根据选择显示那些交易品种与时间表的多个图表。标题将呈蓝色显示。如果某指标已应用于图表,则各自的指标亦会应用于所有子窗口图表。若通过单击 TYPE SIGNAL/TRADING STRATEGY 列中的信号名称移除某指标,则所有子窗口图表中的指标亦会被移除。如果您想应用某个指标,也是如此。在列标题为蓝色的情况下勾选/取消勾选各框,则会向子窗口添加各个图表或是从子窗口中移除。在标题呈蓝色的情况下,如您单击标题,则子窗口会最小化。事实上,它会被删除,但所有复选框都会保留不动,而且您随时都可以轻松恢复此工作空间。子窗口尺寸不固定;您可以通过手动拖拽顶部边框来更改其高度,因为在绝大多数的指标中,它们都显示于子窗口中。如果调整了子窗口或程序窗口的大小,则子窗口图表的位置也会被调整,以令其始终匹配子窗口,不会彼此重叠。如果同时勾选了所有框,则子窗口也会相应地显示所有图表。单击某子窗口图表,您就会看到在一个子窗口图表中显示的主窗口中的交易品种/时间表。如果您通过按下 +/- 键在图表上放大/缩小,则所有子窗口图表的比例亦会相应变化。
要想舒服地使用 EA,您至少要准备一台 15” 的监视器。
收到指标句柄后,即应指定指标的工具、时间表及参数。由于所有信号的显示,都在指标的外部参数中设定,所以我们根据 EA 设置中选择了哪些信号,在收到句柄后立即指定各自的设置,由此获取到仅于子窗口图表中观察那些已用于某策略中的信号的可能性。
图 35. 子窗口中的多个图表
- TAKE PROFIT (获利)。第六列会显示在 EA 外部参数中设定的 Take Profit 值。如果某策略的某参数块要求不得使用 Take Profit (NO TAKE PROFIT),则相应的文本会于 Parameters System 面板的表中显示,即,NO TP。
- STOP LOSS (止损)。第七列会显示 Stop Loss 值。其显示原则与 Take Profit 中所述一致。如未设定任何 止损,则表中会显示 NO SL。
7.2. CLOCKS OF TRADING SESSIONS (交易时段时钟)
移至 Clocks Of Trading Sessions 时,面板会呈现出如下变化:
图 36. 交易时段时钟
在这里,您可以看到在 EA 外部参数中设定的时间参数值。这些参数的简要描述,请见EA 参数描述表。要注意的是:最高优先权被分配给了 ON/OFF TIME RANGE (开启/关闭时间范围)选项,以在设定时间范围内交易。也就是说,如果某交易品种的所有时间选项均已启用,则 EA 会由 ON/OFF TIME RANGE 引导。
于此时间范围末尾处的所有仓位都会被平仓,而且与已平子仓关联的挂单也会被移除。按优先顺序,下一个选项为 CLOSE IN THE END DAY (结束日平仓),用于在一天结束时平仓。如果同时启用一天结束时平仓与一周结束时平仓 (CLOSE IN THE END WEEK) ,则 EA 会基于该选项进行交易。只有将 ON/OFF TIME RANGE 与 CLOSE IN THE END DAY 参数都设置为 FALSE 的情况下,才会在一周结束时平仓。上述功能可用于 EA 的自动与半自动两种模式。
利用时间范围模式,您可以将开始交易的时间 (START TRADE) 设置为晚于(以小时计)或早于所有交易停止 (END TRADE) 和全部平仓的时间。也就是说,如果 START TRADE 值为 10 :00 并且 END TRADE 为 23 :00,则 EA 会开始寻找某个在上午 10 时的特定交易品种的信号;而且,如果某仓位保持敞口到 23 :00 ,则其会在下午 11 时平仓,且移除所有挂单。
到上午 10 时后,EA 就不会再尝试为此交易品种建仓。如果交易起始时间设置为 22 :00 且结束时间设置为 16 :00,则 EA 会在当日的 22 :00 开始交易,并于次日的 16 :00 结束。
图 37. 第一个值大于第二个值情况下的时间标度
在 Clocks Of Trading Sessions 面板靠下的部分,您可以看到格林威治标准时间 (GMT)、当地时间以及服务器时间。如果没有到服务器的连接,则会用红色横杠代替服务器时间显示: -- : -- : -- .
图表中的当前交易,可通过单击 SYMBOLS 列中的交易品种名称进行更改。时间表值将取自首先为某特定交易品种列出的策略。
Manual Trading 用于手动与半自动交易,分为多个部分,而且您可以通过在 OPERATION WITH POSITION & ORDERS 列中点击其名称的方式,于其中切换:
- Buy/Sell/Reverse (买入/卖出/反向)。
- Close Positions (平仓)。
- Set Pending Orders (设置挂单)。
- Modify Orders/Positions (修改订单/仓位)
- Delete Pending Orders (删除挂单)。
已启用 Buy/Sell/Reverse 部分的 手动交易 如下所示:
图 38. 手动交易;BUY/SELL/REVERSE 部分
此部分中的选项(按钮)用于当前交易品种某仓位的买入、卖出和反向。这些选项下方,您可以看到输入止损 (SL)、获利 (TP) 和 Lot (LT) 值。如果您在 SL/TP 框中输入零值并尝试买入/卖出,则会在没有止损/获利的情况下建仓。只需单击对应特定输入框的名称,即可快速输入零值。如您单击输入框名称 LT ,则会设置该工具的最小可能手数。
单击其中一个按钮,即可启用待机与调整模式。按钮的颜色会变化(变深),而且如果 SL/TP 值不是零,水平等级就会出现于与止损/获利所设位置价格等级对应的图表中。START 按钮会显示于面板的右上角(此规则适用于所有部分的选项)。利用此按钮执行一次交易操作。此流程我们在讲完其它面板选项之后再详谈,因为它们多少有些关联。
辅助选项位于 Buy/Sell/Reverse 部分的靠下位置:
- Follow The Price (跟随价格): 此选项有两个待选变量 - 调整设定等级,或是在输入框中调整相对于等级的值。
- Levels (等级)。如选择此变量,止损/获利设置所依照的水平等级,就会跟随价格,以始终保持输入框中指定的距离。
- Value Edits (值编辑)。 如选择此变量,则水平线不会移动,但是根据从价格到各等级的距离(如有设置),输入框中输入的值不会被调整。
- Set Range Orders (设置订单范围)。 如果您需要在图表中查看下订单所依据的所有交易与水平等级,而且无需使用垂直价格标度的手动调整,那么此选项专为这种情况而设计。一次单击即可完成调整。价格图表的最大与最小值设置如下:分别为,最高等级加上 5 点,最低等级减去 5 点。如果有一个带多个图表、显示特定交易品种敞口仓位和(或)挂单的子窗口,则垂直标度调整亦适用于它们。
- TP/SL As Position (按仓位获利/止损)。 此选项有助于挂单止损/获利设置与修改过程的自动化。也就是说,如果某挂单设置的同时,存在一个此交易品种、带有止损与/或获利的敞口仓位,则此挂单的止损/获利设置为与该仓位的水平相同。如勾选此框,即便是未于请求中指定,止损/获利水平也会设定。换而言之,您无需在需要即时执行的调整方面花费时间。MetaTrader 5 为挂单/止损/获利的修改提供了一款标准工具,用鼠标即可轻松拖拽等级。此工具可于 Terminal settings -> Charts tab -> Dragging of trade levels 中启用/禁用。如其随同 EA 的 TP/SL As Position 选项一同启用,则 EA 还会注意挂单/止损/获利的修改。也就是说,只需轻松拖拽某特定交易水平,在所有情况下,EA 都会调整所有挂单的止损与获利水平。
- Names Levels (等级名称)。 这是一个简单的选项,用于设置水平等级名称与价格值显示的模式。
我们来看一看下方价格图表中阐释的情况,同时在执行交易之前,审查水平等级的修改,比如带有止损与获利等级的买入。
图 39. 设置订单范围使用图解
上图(动画)所示为按下的 BUY 按钮(它颜色变得深很多,且 START 按钮出现于右上角)。现在,您可以在图表中看到水平线了:红线 - 止损,绿线 - 获利。如已禁用 Set Range Orders 选项,则获利水平于图表中不可见(线仍在显示,只是超过了窗口的可视范围)。如您启用 Set Range Orders,则图表高度会以所有水平均可见为原则进行调整。
如要启用了 Set Range Orders 选项,通过拖拽水平等级,输入框中的值和相对于等级的图表高度,都会自动调整。等级亦可通过输入框中的输入值更改。如您尝试在止损水平的等级内部设置一条水平线,则 EA 会将其推出这些等级(此规则适用于所有部分)。只需按下 START ,就会建一个仓(前提是没有其它阻碍),且 START 按钮随后亦被移除。
上例中讲到的,是与当前交易品种不存在任何仓位相关的情况。这种情况下,REVERSE 按钮不可用。更确切地说,如果您点击它,就会听到一个报错声响,按钮不会被按下,而且 START 按钮也不会出现。但如果已有一个敞口仓位,则 REVERSE 按钮旨在按相同的交易量反转仓位,保持相同的止损与获利水平(如果有的话)。
BUY 和 SELL 按钮亦被用于增加/减少当前持仓量,同时通过添加止损/获利水平(如果之前未设置)对仓位实施同步修改。您还可以利用这些按钮来平仓或反转仓位。交易操作在实际中的可能组合非常多。
图 40. 手动交易;CLOSE POSITIONS 部分
Close Positions 部分于手动交易模式下可用,其中包含平仓相关选项:
- ALL ONLY PROFIT (所有盈利)会平掉当前盈利的所有仓位。
- ALL ONLY LOSS (所有损失)会平掉当前损失的所有仓位。
- ON ALL SYMBOLS (针对所有交易品种)会平掉所有交易品种的仓位。
- ON CURRENT SYMBOL (针对当前交易品种)仅会平掉当前交易品种的仓位。
7.3.3. SET PENDING ORDERS (设置挂单)部分
图 41. 手动交易;SET PENDING ORDERS 部分
此部分的选项允许操作挂单。与 Buy/Sell/Reverse 部分的内容类似,这里也有止损 (SL)、获利 (TP) 及手数(LT) 输入框。此外,还有下述内容的输入框:
- 用于挂单 (PO)。
- 用于一个一旦达到、即会触发某个BUY STOP LIMIT/SELL STOP LIMIT 类型执行价格 (EP) 挂单设置的水平。
- 用于一组挂单的同步设置 (+PO)。
- 用于作为一个组进行设置时订单之间的间隔 (SPACE) (SP)。
主体修改规范已于 Buy/Sell/Reverse 部分的相关描述中列出。更要注意的是,EA 不允许交易水平的不正确设置。它们会一直根据交易规范,想尽办法对错误方式设置的内容进行调整。
下图即为一组挂单的设置示例。
注意:输入框中输入的值 (+PO) 为 12,但假如设定了一个获利水平,EA 就会调整图表中的数字。如果拖动获利水平,图表中订单位的数量就会随之变化。
图 42. 设置挂单的指定数量
7.3.4. MODIFY ORDERS/POSITIONS (修改订单/仓位)部分
此部分包含帮助快速修改此前建立仓位的选项。如下图所示:
图 43. 手动交易;MODIFY ORDERS/POSITIONS 部分
如果未针对某现有仓位设定任何止损/获利水平,则可以利用获利/止损选项进行设置。如果某仓位已有止损/获利水平,则可以利用相应按钮被按下时出现的水平线,对其进行轻松修改。
利用 SET STOPLOSS TO BREAKEVEN (将止损设置为盈亏平衡),可以对那些利润大于或等于输入框 IF PROFIT >= 中指定点数的仓位进行修改。
7.3.5. DELETE PENDING ORDERS (删除挂单)部分
您可以在 Delete Pending Orders 部分找到快速删除挂单的选项。
图 44. 手动交易;DELETE PENDING ORDERS 部分
- ALL ON ALL SYMBOLS 删除所有交易品种的所有挂单;
- ALL ON CURRENT SYMBOL (CS) 删除当前交易品种的所有挂单;
- BUY STOPs (CS) 删除当前交易品种买入止损类型的所有挂单(CS 当前交易品种);
- BUY STOP LIMITs (CS) 删除当前交易品种买入止损限价类型的所有挂单;
- BUY LIMITs (CS) - 删除当前交易品种买入限价类型的所有挂单;
- SELL STOPs (CS) - 删除当前交易品种卖出止损类型的所有挂单;
- SELL STOP LIMITs (CS) - 删除当前交易品种卖出止损限价类型的所有挂单;
- SELL LIMITs (CS) - 删除当前交易品种卖出限价类型的所有挂单。
7.4. TRADING PERFORMANCE (交易表现)
下图所示为 Trading Performance 部分:
图 45. TRADING PERFORMANCE (交易表现)
本部分包含一个七列表格。第一列的 SYMBOLS 与其它部分的相关内容一致。下面我们详细讲讲其它几列:
- R & RP (%) 此列会显示敞口仓位风险,且以每个交易品种单独的百分比表示。如果某仓位的止损水平经过修改、且看起来比开盘价高,则该值呈绿色显示,否则为红色。如果某仓位未设置任何止损水平,则会出现一个警告标志: ! ! ! .
- R & RP (p/$) 此列亦会单独显示每个交易品种的仓位风险。此列的标题可以点击。如果标题被按下,则其显示为蓝色,且值以点数表示 - R & RP (p)。如未按下,则其以一个币值表示 - R & RP ($)。值的颜色取决于利润是否有保护。如果某仓位未设置任何止损,则会出现一个警告标志: ! ! ! .
- PROFIT n DAYS ($) 此列的值会呈示出某指定天数范围内的利润。其标题可以点击;单击后,面板的右上角会出现一个输入框,且标题会变蓝。在输入框中指定天数范围内每个交易品种的利润,都会单独显示。相同值则会随后显示于标题中。值颜色取决于指定天数范围内的盈利/损失。
- MARGIN ($) 此列中的值会表明每个仓位所用预付款的额度。
- TICK LOSS/PROFIT ($) 此列会显示一次亏损/盈利交易中的价格变动值。
- MARGIN CHECK BUY/SELL ($) 此列中,您可以看到执行一次买入/卖出交易所需的净值交易量。此标题可以点击。单击后,您可以在面板右上角创建一个带有上一次指定的交易量值的输入框。如果输入新值,则列中所有值都会重新计算。
7.5. ACCOUNT/SYMBOLS INFO (账户/交易品种信息)
图 46. ACCOUNT/SYMBOLS INFO (账户/交易品种信息)
此部分包含与账户及当前交易品种相关的信息。
8. EA 要用到的更多指标
EA 的运行还需要使用下述指标:
- SUBWINDOW 指标。它并非一个真正的指标,而是一个仿制品 - 一个显示多个图表的子窗口。
- Spy_Control_panel_MCM 指标。该指标由 Konstantin Gruzdev (Lizar) 制定。更多相关详情,请见代码库。EA 中用它来获取下述事件:tick (价格变动)与 new bar (新柱)。
- MultiSignals_PCH 指标。该指标已于文首有所描述。亦可通过代码库或是文末随附的文件列表中下载它。
所有指标均应置于 \MetaTrader 5\MQL5\Indicators 目录下。
总结
好了,我们在这里得到了一套功能非常多样、却又十分简洁的交易者工具包。
当然,您要牢记:有多种不同的阻碍交易的不可抗力事件,但其中的大多数(如果不是全部的话)都可以避免,只要您专注于中、长期交易,或者至少是不包括一小时内交易在内的日交易(本文中讲到的 EA 是这样)。重要的是明白,这可不是什么魔法棒,让您能够不费吹灰之力就一夜暴富。与任何其它工具都一样,您要学着使用它,而现在,您现在已经准确好了进行下一步所需的一切。
要在将来逐步实施的想法非常之多。对于程序的开发仍将进一步继续,而购买它的用户也会得到相关的支持。而且,此产品的用户还可以免费升级程序。如果您在产品开发方面有何意见或建议,请随时通过我的用户档案中指定的电子邮件与我联系,或干脆发私信给我。加入本项目,我们则会在交易之路上并肩远行!
本文由MetaQuotes Ltd译自俄文
原文地址: https://www.mql5.com/ru/articles/392
![为什么说 MQL5 应用商店是销售交易策略与技术指标的最佳去处](https://c.mql5.com/2/0/mql5-market.png)
![如何在"应用商店"中发布产品](https://c.mql5.com/2/0/publish_Market.png)
![OpenCL:并行世界的桥梁](https://c.mql5.com/2/0/OpenCL_Logo.png)
![AutoElliottWaveMaker - 用于艾略特波浪半自动分析的 MetaTrader 5 工具](https://c.mql5.com/2/0/ElliottWaveMaker2_0.png)
新文章 MetaTrader 5 与 MQL5 提供的无限机遇已发布:
作者:Anatoli Kazharski