您好,请问 Bar M5 M15 H1 H4 中的等价物是什么?
你好
时间 符号 OPEM CLOSE PH PB
2013.01.04 04:55 eurgbp 0.81065 0.81078 0.81086 0.81065 172
2013.01.04 05:00 eurgbp 0.81079 0.81046 0.81080 0.81044 90
2013.01.04 05:05 eurgbp 0.81047 0.81044 0.81056 0.81044 89
2013.01.04 05:10 eurgbp 0.81043 0.81059 0.81059 0.81033 111
2013.01.04 05:15 eurgbp 0.81057 0.81052 0.81059 0.81048 78
2013.01.04 05:20 eurgbp 0.81051 0.81065 0.81071 0.81050 124
2013.01.04 05:25 eurgbp 0.81067 0.81066 0.81070 0.81060 243
2013.01.04 05:30 eurgbp 0.81067 0.81076 0.81080 0.81063 108
您好、
时间 符号 OPEM CLOSE PH PB
2013.01.04 04:55 eurgbp 0.81065 0.81078 0.81086 0.81065 172
2013.01.04 05:00 eurgbp 0.81079 0.81046 0.81080 0.81044 90
获取周期性数据的最佳方法(据我所知)是使用 MT4 历史记录,您可以下载并导出历史数据(到 excel):
//+------------------------------------------------------------------+ //|PeriodicRealTimeDataStream.mq5 //| 2013 年 MetaQuotes 软件公司版权所有。| //|http://www.mql5.com || //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" datetime t1; double arro[1],arrh[1],arrl[1],arrc[1]; string T,O,H,L,C; long arrv[1],V; //+------------------------------------------------------------------+ void OnTick() { t1 = (datetime)SeriesInfoInteger(_Symbol,_Period,SERIES_LASTBAR_DATE); static datetime t0 = t1; //--- 获取指定图表的数值 if (t0!=t1) { //--- 将值复制到数组 CopyOpen(_Symbol,_Period,0,1,arro); CopyHigh(_Symbol,_Period,0,1,arrh); CopyLow(_Symbol,_Period,0,1,arrl); CopyClose(_Symbol,_Period,0,1,arrc); CopyTickVolume(_Symbol,_Period,0,1,arrv); //-- T=TimeToString(t1,TIME_DATE|TIME_MINUTES); O=DoubleToString(arro[0],_Digits); H=DoubleToString(arrh[0],_Digits); L=DoubleToString(arrl[0],_Digits); C=DoubleToString(arrc[0],_Digits); V=arrv[0]; //--- 输出数值 printf("%s %s %s %s %s %s %d",T,_Symbol,O,H,L,C,V); //--- 再次设置时间 t0=t1; } //--- } //+------------------------------------------------------------------+
如果您希望导出 csv,可以使用主代码中的文件函数和变量
你说得没错,由于 NewTick 事件的处理方式,可能会出现遗漏报价的情况,但代码足够快,这种可能性非常小 (几乎为零)。如果遗漏报价的情况比我想象的多(这可能会影响分析的意义),那么是 Ontick() 出了问题,而不是我的代码。
关于"......将卖出价和买入价的所有逐点数据存储到一个 txt 文件中。"这句话,我很久以前就意识到了,并做了修改:)现在已经没有 "所有 "这个词了,但在论坛上还是一样--很抱歉,我没有能力修改它,我喜欢重新编辑注释,但对于这句话来说是不可能的:(
这不是一个错误,它就是这样工作的...................如果在新的 tick 出现时 OnTick() 正在运行,新的 tick 将被忽略 .
新刻度线
如果有新的报价,就会生成NewTick 事件,由附加智能交易系统的OnTick() 处理。如果收到新报价时正在处理前一个报价的 OnTick 函数,则 Expert Advisor 将忽略新报价,因为相应事件不会被触发。
程序运行时收到的所有新报价都会被忽略,直到 OnTick() 函数执行完毕。之后,只有在收到新报价后,函数才会运行。
......您是否测试过通常会错过多少个跳动点?
It's not a bug, it's just how it works . . . if OnTick() is running when a neew tick arrives the new tick is ignored . . .
我很困惑,你认为这是处理新刻度的方式,我也这么认为:)
erdogenes:
你说得对,由于 NewTick 事件的处理方式,有可能会丢失引号。
RaptorUK :
..你测试过通常会错过多少个 ticks 吗?
我不知道遗漏的点数,我获取的是程序获取的,我如何计算呢?我不能代表 MetaQuotes 发言。我无法直接访问交易服务器来比较报价。我不能为一个程序计算它,当程序是我的时,它就不会改变,我只能从统计学的角度说话。
我为您编辑了一个高频数据处理示例。我用 2011 年 1 月 27 日的银行间汇率计算出了同一毫秒内到达的跳动率--计算程序是 Gretl,您可以使用代码,数据通过邮件发送(抱歉,我不能公开分享这些数据)。结果是 ~0.003(这是同一毫秒内到达的跳动率,而且是活跃的一天)。
我们假设 MT5 处理的数据(荒谬的是)全部丢失(~0.003)。我的答案是否定的。我们在分析中已经使用了更高比率的重采样。
当然,这只是假设,并非来自经纪人,但我希望你能理解我的观点。再说一遍,我没有能力获得缺失刻度线的真实数量。
还有一点:如果是 NewTick 事件处理程序的 "无队列 "策略导致了跳空点数(确实如此),那么我认为跳空点数也可能取决于您的硬件速度。因此,不能将其作为标准值来计算。
(我重新修改了评论:我修正了发送给您的代码,因为它存在错误,实际结果为 ~0.003,代码附后)。
我很困惑,你认为这是处理 newtick 的方式,我也这么认为:)
可能是你理解错了: 如果缺少刻度 对分析 有重大影响, 那么 ontick 就有问题,而不是正常情况(因为它是 "新刻度 "事件处理程序,如果它不能处理足够多的刻度,它就有问题),但我不认为它 不能处理,我也不认为它有问题。
我不知道遗漏的刻度,我获取的是程序获取的,我如何计算它呢? 我不知道 Ontick 一天遗漏了多少刻度(我没有开发 mql5)。
询价 出价 即时价:
"AskBidTicks" 是一套用于微观结构分析的高精度, 实时报价数据方案。它输出每一个即时价格至一个 csv 文件。它以本地电脑时间工作。
作者: Erdem Sen