如何在MT4上进行tickmill级别测试

Sina Visitor System使用tick+真实点差进行99%数据精度历史回测
10:12:39 · 14503 次点击
马上注册,结交更多好友,下载更多资源
才可以下载或查看,没有帐号?
MT4回测的最大精度是M1,也就是说M1以下的数据,每次都是电脑模拟出来的,但一分钟可以发生太多事情。差之毫厘谬以千里,尤其是在EA测试上更是这样。今天教大家如何使用dukascopy提供的免费tick数据+当时的市场真实点差,来做99%超高精度的历史回测。
声明:dukascopy仅用于数据下载,脚本原作者:birt。
言归正传。
1.注册dukascopy模拟账户。打开官网,选择注册模拟账户。
直达链接:https://www.dukascopy.com/swiss/chinese/forex/demo_fx_account/
信息随便填,但请务必填真实的邮箱,如果你不想收到dukascopy的推荐邮件,请用你的小号邮箱。
2.登陆dukascopy
下载jforex(在附件里),用邮箱里收到的账户密码登陆。
ytd6jd5e5kcldj.jpg (134.05 KB, 下载次数: 17)
10:12 上传
3.在jforex里打开历史数据中心,按照下图选择日期,分隔符,tick,货币对,下载位置。然后点开始。
4.下载结束后,打开MT4,点左上角文件,选择数据文件夹。
a把附件里的脚本里的 MQL4 文件夹,覆盖到数据文件夹根目录里的同名文件夹。
b把刚才下载好的CSV文件拷贝到MQL4/Files下。
在进行第4步时请注意:dukascopy下载好的CSV文件都是带时间的,拷贝到MT4数据文件夹后,请把原来的文件名删掉后缀,改成货币对名称,如“EURUSD”,才能顺利进行转换。
5.打开你要测试的货币对选择好时间周期。(比如你要测试EURUSD,15M,就打开EU,选择15分钟)
在MT4导航里找到脚本,双击其中的CSV2FXT脚本。然后找到以下选项:
Use real spread(使用真实点差):选择true
commission(手续费):根据实际情况填写,注意:dukascopy是原始点差+手续费,如果你手续费默认为0,将导致测试点差过低。
FXT GMT offset(时区设置):根据你MT4服务器所在时区填写
其他默认,然后点击确认,左上角会跳出1%的进度条。等进度条读取完后,会跳出一个对话框,点击yes。一切顺利的话,重启MT4。
6.在EU,15M图表上拖入“回测”脚本,弹出对话框点确认。
7.在EU窗口保持打开的情况下,使用MT4历史回测器进行历史回测。
如果一切正常,不会出现生成数据的步骤,而是直接开始回测。注意:你只能回测EURUSD 15M,并且不能做数据优化。
(212.5 KB, 下载次数: 712)
10:11 上传
点击文件名下载附件
下载积分: 金币 -2 金币
14503&次点击 &
&& 10:56:52&
{:132_131:}
&& 14:49:20&
&& 15:05:37&
.下载结束后,打开MT4,点左上角文件,选择数据文件夹。
a把附件里的脚本里的 MQL4 文件夹,覆盖到数据文件夹根目录里的同名文件夹。
b把刚才下载好的CSV文件拷贝到MQL4/Files下。&&
第四步我不明白 请教用哪个mt4
&& 20:30:16&
commission(手续费):根据实际情况填写,注意:dukascopy是原始点差+手续费,如果你手续费默认为0,将导致测试点差过低。
没懂什么意思
&& 20:54:06&
7.在EU窗口保持打开的情况下,使用MT4历史回测器进行历史回测。
没说明白的,那点差应该选择多少
&& 22:26:16&
谢谢分享!好复杂的样子
&& 21:23:47&
学习学习学习学习
&& 14:07:49&
EA代开发,可根据指标做单,可模仿破解EA,有观摩账号即可。机构10W美金的开发的EA,可低成本模仿。联系QQ:,另售本地跟单软件,可多跟多账户,比例可调。
&& 12:35:19&
谢谢分享!好复杂的样子
添加一条新回复
&&最大的外汇智能交易社区!
外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!EA 外汇交易 MT4平台指标编程
如何根据时间确定 MT4 中 K 线的序号(Time 数组的索引值)
MQL4、MQL5 自定义指标中 OnCalculate() 函数的参数会引用传递关于 K 线价格和时间的数组,通常指标都是直接遍历所有数组元素,并不需要单独提取某一根 K 线。
ArrayBsearch() 函数
如果需要寻找特定价格的 K 线序号,可以使用 ArrayBsearch() 函数,比如有一个数组:
int t[] = {1, 2, 3, 4, 5, 6, 7};
如果调用:
ArrayBsearch(t, 4);
会返回 3。( t[3] = 4)
ArrayBsearch() 函数支持六种类型的数组,包括:double、float、long、int、short、char,所以 OnCalculate() 的参数中,open[]、high[]、low[]、close[]、tick_volume[]、volume[]、spread[] 都可以用这个函数查找需要的元素,但 time[] 就不行了。
而我在编写 MT4、MT5 自定义指标时偏偏需要用到这个功能,简单搜索了一下 MQL4 和 MQL5 的文档,没有找到检索 datetime 类型数组的函数,于是自己写了下面一个算法:
MT4、MT5 Time[] 数组查找算法(一)
int i = (int)(Time[0] - dt) / PeriodSeconds();
这里的 dt 是处理过的时间,对应当前图表周期的整数时刻,用数组中第一个元素的时间减去 dt,再除以当前图表对应的周期秒数,就可以得到索引值。
实际应用时发现计算的索引值并不是每次都是正确的,检查了一下意识到 K 线图中的 K 线在时间上并不是连续的,所以不能通过简单的时间相减来计算两根 K 线的间距,只能自己写一个类似 ArrayBsearch() 的函数了。
MT4、MT5 Time[] 数组查找算法(二)
由于 Time[] 数组是按时间排序的,所以当给定一个时间,可以先跟 Time[] 数组的中间元素对比,给定的时间大于数组中间元素,则向左递归查找,小于则向右递归,相等就是找到了。递归比较浪费资源,可以改成循环查找。
MT4、MT5 Time[] 数组查找源码
int datetimeArrayBsearch(const datetime &time[], datetime dt){
// 时序数组是从右向左的,是倒序,left 为数组最末端。
int left = ArraySize(time);
int right = 0;
int parent =
int(left / 2);
// 这里可以使用 while 循环,测试时为了避免算法有误出现死循环所以用的 for 循环。
for(int i = 0; i & 50; i++){
if(dt & time[parent]){right =}
else if(dt & time[parent]){left =}
else if(dt == time[parent]){}
parent = int((left - right) / 2) +
参数 dt 也是需要传入一个处理后的时间,不然会匹配不到。或者将时间处理方法并入此函数开头。
此函数仅为算法示例,即使 dt 是符合当前图表周期的整数时刻,也可能会出现 Time[] 数组不包含 dt 的情况。K 线图在时间上不一定是连续的。
由于每次比较后,待查找的元素总数都是上一次的二分之一,这个算法的效率还是非常高的。
MT4 自定义指标、 MT4 平台、MT5 编程入门、MQL4 函数、MQL5 中文文档。
版权声明:本站所有原创文章,作者保留版权。转载必须包含本声明,不得修改任何内容(包括文章标题),并以超链接的形式注明作者“Bary”和本文原始地址。关注证券之星官方微博:
MT4最新测试版平台发布 新增指标测试功能
FX168讯 知名交易平台MT4和MT5的开发公司MetaQuotes Software上周五(5月15日)发布了最新的MT4平台测试版本810,新加入的功能包括交易者可以自行进行指标测试(test indicators)。此前很长一段时间MT4平台的使用者都在不断要求能够测试指标,尽管MT5提供上述功能,但MT4仍注重专家建议测试,而非指标测试。现在,全新的MT4版本810已经能够满足使用者指标测试的需求。MT4使用者可以在虚拟测试模式中进行指标测试,指标的表现将如下图是所示:对于那些使用MT市场的交易者而言,这项功能无疑是十分有用的。他们可以先下载一个免费的试用版,来检测策略中回溯测试(Backtest)的表现。此外,到日,低于745的MT4终端版本将无法再连接新版本的服务器。MetaQuotes Software强烈建议交易者升级MT4终端。校对:长阳
0102030405
郑重声明:以上内容与证券之星立场无关。证券之星发布此内容的目的在于传播更多信息,证券之星对其观点、判断保持中立,不保证该内容(包括但不限于文字、数据及图表)全部或者部分内容的准确性、真实性、完整性、有效性、及时性、原创性等。相关内容不对各位读者构成任何投资建议,据此操作,风险自担。股市有风险,投资需谨慎。
欢迎访问证券之星!请与我们联系 版权所有:Copyright & 1996-年

我要回帖

更多关于 mt4 tick级别 的文章

 

随机推荐