在 MetaTrader 5 中创建和测试自定义交易品种

MetaQuotes | 25 九月, 2017

MetaTrader 5 中的自定义交易品种提供了开发交易系统和分析任何金融市场的新机遇。现在,交易者可以在无限的金融资产工具上绘制图表和测试交易策略了。要这样做的话,他们只需要根据分时或者分钟历史创建他们的自定义交易品种,自定义交易品种可以用于测试任何来自市场或者免费代码库中的交易机器人。

创建自定义交易品种

让我们基于已经存在于市场报价中的交易品种创建一个自定义交易品种。使用鼠标右键选择您想要用于创建自定义交易品种的交易品种,打开交易品种窗口。


在点击 "创建自定义交易品种" 之后, 设置它的名称,如有必要在合约规格中修改所需的参数。


所有自定义交易品种都位于Symbol(交易品种)树的独立的<Custom>目录下,不论您现在连接的是哪家经纪商。自定义交易品种的价格数据保存在交易服务器数据目录之外的独立的Custom(自定义)目录之下。

C:\Users\[windows account]\AppData\Roaming\MetaQuotes\Terminal\[instance id]\bases\Custom

这是创建自定义交易品种的另一个优点 — 您可以简单地从每个经纪商处复制所需的交易品种到您的自定义组中。就像传统的交易品种那样,您只能在自定义交易品种没有开启的图表以及不在市场报价中显示时删除它。

配置自定义交易品种

您可以设置报价的精确度,合约大小,交易品种币别,执行方法以及所有其它影响自定义交易品种交易策略测试结果的参数。


输入历史

在创建自定义交易品种之后,我们需要给它加上报价历史。首先,让我们看看如何根据已经存在的交易品种创建历史。在交易品种窗口中,根据你想如何准备历史打开“柱”或者“分时”页面,在所需的时间范围之内进行输出. 如需取得柱数据,选择 M1 时段,因为在 MetaTrader 5 中整个历史都是基于分钟数据的。


输出完成的形式是一个文本格式的 CSV 文件,名字看起来如下: EURUSD_M1_201701020000_201707251825.csv, 它包含了交易品种名称,时段和输出历史的时间范围,精确度到分钟。下面就是当输出柱数据时的格式外观:

<DATE>	        <TIME>	        <OPEN>	<HIGH>	<LOW>	<CLOSE>	<TICKVOL><VOL>	     <SPREAD>
2017.01.02	00:03:00	1.05141	1.05141	1.05141	1.05141	6	15000000	118
2017.01.02	00:04:00	1.05141	1.05141	1.05141	1.05141	2	5000000	        112
2017.01.02	00:05:00	1.05158	1.05158	1.05148	1.05158	10	17000000	101
2017.01.02	00:06:00	1.05148	1.05158	1.05148	1.05158	7	13000000	101

当输出分时历史时,CSV 文件变的非常大,并且它的格式取得的数据从每个分时到几个毫秒,使用这些数据,终端就构成了一分钟的历史,而其他时段的数据都是基于它的。

<DATE>          <TIME>          <BID>   <ASK>   <LAST>  <VOLUME>
2017.07.03      00:03:47.212    1.14175 1.14210 0.00000 0       
2017.07.03      00:03:47.212    1.14168 1.14206 0.00000 0       
2017.07.03      00:03:47.717    1.14175 1.14206 0.00000 0       
2017.07.03      00:03:54.241    1.14175 1.14205 0.00000 0       
2017.07.03      00:03:57.982    1.14165 1.14201 0.00000 0       
2017.07.03      00:04:07.795    1.14175 1.14201 0.00000 0       
2017.07.03      00:04:55.432    1.14164 1.14200 0.00000 0       
2017.07.03      00:14:33.743    1.14173 1.14203 0.00000 0       
2017.07.03      00:14:33.743    1.14173 1.14201 0.00000 0       
2017.07.03      00:16:44.901    1.14174 1.14195 0.00000 0       

所以,如果您为您的自定义交易品种使用任何第三方来源构建历史,您就需要准备和上面显示的格式类似的数据。

如需输入历史, 进行的步骤也是类似的。在 Custom\<Custom group> 文件夹下找到您 EURUSD_my 自定义交易品种,转到Ticks(分时)页面,选择所需的 CSV 文件并点击"Import Ticks(输入分时)" (输入柱数据时做的一样).


在输入历史之后,您可以通过新增、删除或者修改任何柱和分时数据对它进行编辑。

创建的自定义交易品种在市场报价中可以使用了,您就可以从它们打开图表,这样,自定义交易品种就使得您可以使用 MetaTrader 5 技术分析中的整个丰富工具,包括载入任何自定义指标和来自市场的分析工具


在自定义交易品种中测试交易策略

多线程的 MetaTrader 5 策略测试器使您可以根据多个金融资产在真实分时中测试交易策略,使用它的所有优点来在自定义交易品种中测试策略。为此,输入一个高质量分钟(分时更好)历史,并为每个资产设置属性以详细重建交易环境,在那之后,选择所需的EA并设置测试配置,整个过程和操作由您的经纪商提供的传统的交易品种一样。


给测试器提供所有您可能需要的,以您交易账户币别计算保证金需求和利润的所需交易品种。当计算保证金和利润时,策略测试器自动使用可用的交叉汇率。假定我们已经创建了 AUDCAD.custom 交易品种,保证金计算类型为 外汇交易,而我们账户的币别是美元。在这种情况下,策略测试器会根据外汇交易品种的名称按照下面的顺序搜索所需的交易品种:

  1. 首先,进行搜索的交易品种格式是 AUDUSD.custom(用于计算保证金) 和 USDCAD.custom (用于计算交易利润)
  2. 如果这些交易品种中的任何一个不存在,搜索就根据名称搜索第一个交易品种对应的所需货币对 (对应为 AUDUSD 和 USDCAD). 例如,找到了AUDUSD.b 和 USDCAD.b 交易品种,这里的意思就是使用它们的汇率来计算保证金和利润。
使用其他类型保证金计算方法的资产(CFD, 期货和股票交易)需要货币对来把资产币别转换为存款币别。假定我们已经创建了一个自定义交易品种,它的利润和保证金币别以GBP表示,而存款币别为CHF,在这种情况下,对测试交易品种的搜索是按以下顺序进行的:
  1. 检查是否存在交易品种对应着 GBPCHF (GBP vs CHF),
  2. 如果没有存在这样的交易品种,搜索以 GBPCHF 对应的交易品种名称,例如 GBPCHF.b 或者 GBPCHF.def。

当使用自定义交易品种测试时,要确保交易账户有所有所需的货币对。否则,在测试中就不能计算金融资产的保证金需求。

在局域网中对自定义交易品种优化策略

除了您自己的代理,你也能使用局域网中的代理以及远程代理来优化您在自定义交易品种中的交易策略。这是使用 MetaTrader 5 策略测试器的另一个优点,它使您可以缩短花费在寻找您交易系统最优参数的时间。

不允许使用MQL5 云网络来优化自定义交易品种,这是因为,在不同的电脑和不同交易者中,相同名称的自定义交易品种的价格历史可能都不同。除了网络代理之间的测试结果可能不一致,这也可能引起历史数据的大量重新载入和同步,它可能会引起过多的网络使用。


用于操作自定义交易品种的函数

您也可以使用 MQL5 语言操作自定义交易品种,来自"Custom symbols(自定义交易品种)"部分的函数就是这样设计用的。MQL5 应用程序使您快速创建所需的金融资产,根据第三方来源的数据来指定属性。这样,您就能自动收集和准备任何交易品种的历史数据,并且创建您的自定义指数和其他工具,并在MetaTrader 5 策略测试器中测试它们。

函数

行为

CustomSymbolCreate

在指定的组中以指定名称创建一个自定义交易品种

CustomSymbolDelete

删除指定名称的自定义交易品种

CustomSymbolSetInteger

设置自定义交易品种的整数类型属性

CustomSymbolSetDouble

设置自定义交易品种的实数类型属性

CustomSymbolSetString

设置自定义交易品种的字符串类型的属性

CustomSymbolSetMarginRate

根据订单类型和方向为一个自定义交易品种设置保证金比率

CustomSymbolSetSessionQuote

为指定的交易品种设置指定报价交易起始和结束时间以及交易日

CustomSymbolSetSessionTrade

为指定的交易品种设置指定交易起始和结束时间以及交易日

CustomRatesDelete

从自定义交易品种的价格历史中在指定的时间间隔内删除所有的柱

CustomRatesReplace

使用来自 MqlRates 类型数组的数据完全替换自定义交易品种在指定时间间隔内的价格历史

CustomRatesUpdate

使用来自 MqlRates 类型数组的数据增加自定义交易品种历史中缺失的柱并替换数据

CustomTicksDelete

删除自定义交易品种在指定时间间隔内的价格历史的所有分时

CustomTicksReplace

使用来自 MqlTick 类型数组的数据完全替代自定义交易品种在指定时间间隔内的价格历史

这些函数完善了 "取得市场信息"部分的功能,现在,您可以不仅取得任何交易品种的属性,也可以设置自定义资产的属性了。

在 MetaTrader 5 中在任意交易品种中测试您的交易想法!

MetaTrader 5 平台提供了最广泛的机遇给算法交易者,这里只是它们中的一种:

交易者可以使用 MetaTrader 5 平台的所有优点,而交易品种甚至他们的经纪商都没有提供,创建您自己的交易品种并在任何金融市场上测试交易策略!