目前,mql4只能为进入的ticks提供精确到秒的时间。我们使用以下函数。
MarketInfo(Symbol(), MODE_TIME)
1) 是否有一个不同的函数可以提供毫秒级的时间戳,或者可以用来确定来到平台的tick数据的毫秒级?
2) 结合mql5函数的新mql4是否能够请求或获得传入tick的毫秒(或亚秒)时间戳?
那么mt4(和mt5)平台应该如何正确区分 "同一时间 "进入的ticks?
1) GetTickCount(), 应该在现场工作。对历史数据毫无意义。
2) 即使是mt5_data也不是以毫秒为单位保存的。但是,在现场没有问题。
3) 我不明白你为什么要这么做。如果是以毫秒为单位的同一时间,那么有毫秒就没有帮助。如果是以毫秒为单位的不同时间,那么GetTickCount()可能有帮助。帮助是指你的代码在不到一毫秒的时间内处理当前的刻度。有多重要 取决于你要完成的任务...我想。
4evermaat:我认为ticks是由Volume来区分的。每当经纪人发送一个新的刻度,交易量就会增加一个。例如,如果你看的是M1图表,那么某一个条形图的成交量就是该分钟内发送了多少个tick。
事实上,昨天我试着做了一个函数,用毫秒记录时间。它使用了TimeCurrent() 和GetTickCount()。在数学上,它是正确的......但GetTickCount()不够准确。我发现将事件时间四舍五入到最后一秒(即仅仅使用TimeCurrent())的误差比我的函数小... :/
我改天再试试,但据我所知,如果你需要一秒内的精度,就不能依靠GetTickCount()。
也许C++专家可以访问GetTickCount()的更精确的等价物...?
你至少有两个选择。
1.用MQL的GetTickCount()来区分ticks,它的精度为16ms。
2.2. 使用Kernell32.dll的GetLocalTime()访问PC时间,精度为纳秒(这在linux的模拟器上不起作用,它们仍然返回16ms的精度)。
1) 根据我的测试,我不相信GetTickCount()有16ms的精度。的确,16ms是我得到的最小值(除了0),但我不认为关于16ms的值能精确到最接近的16ms。
2) 啊,这是个好主意。我会试一试的。
1) 根据我的测试,我不相信GetTickCount()有16ms的精度。的确,16ms是我得到的最小值(除了0),但我不认为关于16ms的值能精确到最接近的16ms。
2) 啊,这是个好主意。我会试一试的。
对不起,我经常把精度和准确度搞混,我现在也不确定哪个是哪个。
对不起,我经常把准确性和精确性搞混,我现在也不确定哪个是哪个。
我也不知道,我只知道我有一个公式,在数学上应该是可行的,但在现实生活中却不行......所以我责备GetTickCount():)
目前,mql4只能为传入的ticks提供精确到秒的时间。 我们使用以下函数。
MarketInfo(Symbol(), MODE_TIME)
1) 是否有一个不同的函数可以提供毫秒级的时间戳,或者可以用来确定来到平台的tick数据的毫秒级?
2) 结合mql5函数的新mql4是否能够请求或获得传入tick的毫秒(或亚秒)时间戳?
那么,mt4(和mt5)平台应该如何正确区分 "同一时间 "进入的ticks?