时差?
时差?。。
下面是MT4示例:
int start=GetTickCount();
// 计算...
Print("Calculation time is ", GetTickCount()-start, " milliseconds.");
。。。。。。
请问:MT4示例有点看不明白,通过如何“计算”可以计算出来呢?
MT4/MT5 客户端启动之后会在内部生成一个计时器(0 - 2^32-1 毫秒间循环,意即如果客户端启动后不关闭,则20多天后此数值会重新从0开始计数)。
自己开发的程序若需要毫秒级精度的计时,则在初始阶段保存当前的内部计时器数值,即 int start=GetTickCount();
以后只要随时获取当前系统内部计数值,减去初始值,就得到流逝的毫秒值了。
Tick 可以理解为逐笔报价,即从服务器端实时发送的最新报价。
MT4/MT5 接收后会调用 OnTick (在 EA 中),OnCalculate(在指标中) 事件处理器响应,所以只需在相应函数里计算每次接收 Tick 的时间就可算出时差。
不建议依据 Tick 进行交易,因为此数值受经纪商设定,以及网络延迟等因素的影响较大,根本不可靠。
MT4/MT5 客户端启动之后会在内部生成一个计时器(0 - 2^32-1 毫秒间循环,意即如果客户端启动后不关闭,则20多天后此数值会重新从0开始计数)。
自己开发的程序若需要毫秒级精度的计时,则在初始阶段保存当前的内部计时器数值,即 int start=GetTickCount();
以后只要随时获取当前系统内部计数值,减去初始值,就得到流逝的毫秒值了。
Tick 可以理解为逐笔报价,即从服务器端实时发送的最新报价。
MT4/MT5 接收后会调用 OnTick (在 EA 中),OnCalculate(在指标中) 事件处理器响应,所以只需在相应函数里计算每次接收 Tick 的时间就可算出时差。
不建议依据 Tick 进行交易,因为此数值受经纪商设定,以及网络延迟等因素的影响较大,根本不可靠。放
谢谢你的回复,我测试过后发现误差很大,谢谢你的提醒!
下面是MT4示例:
int start=GetTickCount();
// 计算...
Print("Calculation time is ", GetTickCount()-start, " milliseconds.");
。。。。。。
请问:MT4示例有点看不明白,通过如何“计算”可以计算出来呢?
当前Tick直接取后三位即是当前报价的ms数值。
int ms= GetTickCount()- GetTickCount()/1000*1000;
当前报价与前一报价的间隔毫秒,可以用一下代码计算。
Print("Calculation time is ", GetTickCount()-start, " milliseconds.");
start= GetTickCount();
下面是MT4示例:
int start=GetTickCount();
// 计算...
Print("Calculation time is ", GetTickCount()-start, " milliseconds.");
。。。。。。
请问:MT4示例有点看不明白,通过如何“计算”可以计算出来呢?