2016.01.1414:31:08.339 Trades 'xxxxx': modify order #25815313 sell limit 5.00 UJPY-3.16 at 118.23 sl: 0.00 tp: 0.00 -> 118.21, sl: 0.00 tp: 0.002016.01.1414:31:08.347 Trades 'xxxxx': modify order #25815313 sell limit 5.00 UJPY-3.16 at 118.23 sl: 0.00 tp: 0.00 -> 118.21, sl: 0.00 tp: 0.00 placed for execution in8 ms
2016.01.1414:31:09.363 Trades 'xxxxx': modify order #25815313 sell limit 5.00 UJPY-3.16 at 118.21 sl: 0.00 tp: 0.00 -> 118.03, sl: 0.00 tp: 0.002016.01.1414:31:09.370 Trades 'xxxxx': modify order #25815313 sell limit 5.00 UJPY-3.16 at 118.21 sl: 0.00 tp: 0.00 -> 118.03, sl: 0.00 tp: 0.00 placed for execution in8 ms
而在EA日志中。
2016.01.1414:31:08.354 Forts_trader (UJPY-3.16,H1) OnTradeTransaction: Sell ордер был модифицирован за 0 ms
2016.01.1414:31:09.377 Forts_trader (UJPY-3.16,H1) OnTradeTransaction: Sell ордер был модифицирован за 15 ms
如果我们看一下UJPY修改的终端日志,我们看到。
而在EA日志中。
即时间14:31:08.354 -14:31:08.339= 15 ms,而不是0
相应的是第二种修改。
14:31:09.377 -14:31:09.363 = 14 ms(在EA日志中为15 ms)。
谁能解释一下,为什么安装/修改时间可以=0?
这看起来是一个逻辑错误。
从代码中看不出你在OnTradeTransaction 中处理的是哪个 "BuyOrder "和 "SellOrder"。
然后是GetTickCount() 的16ms的错误。
抛弃它,改用微秒(有一个类似的功能)。
这看起来像是逻辑上的错误。
从代码中不清楚你在OnTradeTransaction中处理的是哪个 "BuyOrder "和 "SellOrder"。
专家顾问中只有一个BuyOrder和一个SellOrder。
在开始时检查票号
if( ( BuyOrder.ticket != 0 ) && ( trans.order == BuyOrder.ticket ) )
然后是GetTickCount()的16ms的错误。
抛弃它,改用微秒(有一个类似的功能)。
安德烈,你说的是什么错误?
对于信息:GetTickCount的错误远远小于16ms,你没有使用Windows 95。
P / S 我将尝试GetMicrosecondCount()。
安德烈!谢谢你。
你是对的 -GetTickCount()的错误
EA中只有一个买单和一个卖单。
并在开始时检查票号...
if( ( BuyOrder.ticket != 0 ) && ( trans.order == BuyOrder.ticket ) )
这并不明显,猜测也没有意义。
安德烈,你说的是什么错误?
供参考:GetTickCount的误差远小于16ms,你没有使用Windows 95。
P/S 我将尝试使用GetMicrosecondCount()。
然而,这个错误不断出现。这种测量最好使用µs。
这并不明显,猜测也没有意义。
尽管如此,误差率总是存在的。这类测量最好使用µs。
我已经写过,你对误差范围的看法是正确的(见我以前的帖子)。