void CheckStartDateInTradeHistory()
{
//--- 初始间隔,就像我们现在开始工作一样datetime curr_start=TimeCurrent()-days*PeriodSeconds(PERIOD_D1);
//--- make sure that the start limit of the trade history has not gone //--- 超出预定日期 1 天以上if(curr_start-start>PeriodSeconds(PERIOD_D1))
{
//--- 我们应该更正缓存中要加载的历史记录的开始日期
start=curr_start;
PrintFormat("New start limit of the trade history to be loaded: start => %s",
TimeToString(start));
//--- 现在再次加载已更正时段的交易历史记录HistorySelect(start,end);
//--- 更正历史记录中的交易和订单数量,以便进一步比较
history_orders=HistoryOrdersTotal();
deals=HistoryOrdersTotal();
}
}
Renat:
Конечно после принятия сервером - это же очевидно. Кроме того, функция называется OrderSEND.
好的,我明白了!
至于 "显而易见"--这主要是针对那些与系统密切合作一年以上的人而言。我偶然发现,参考书中的一句话(对于OrderSend() 函数,"如果结构的基本检查成功,则返回true")是否可以被视为返回 true 的充分条件。现在事实证明,不能:它只是一个必要条件,而不是充分条件。
在我看来,你不应该只从true 中得出结论,你还应该分析服务器的响应代码(在我看来,最后一个代码更重要)......
是的,这几个小时让我觉得好像蒙上了一层面纱:在返回代码中根本没有 "基础结构检查成功"(姑且这么叫吧)的代码,这就是为什么在基础检查之后不能立即返回 true 的原因。
至于对返回代码 的详细分析--是的,参考书中建议这样做。我只是一直在寻找合理减少可用检查次数的方法。
请解释一下这是什么意思。授权令已被列入队列?
情况如下
2011.01.26 12:59:26 Network '716201': connection to MetaQuotes-Demo lost
2011.01.26 12:59:26 Trades '716201' : failed instant buy 1.00 EURUSD at 1.37136 [No connection]
2011.01.26 12:58:40 Trades '716201' : instant buy 1.00 EURUSD at 1.37136
2011.01.26 12:56:17 Network '716201': terminal synchronised with MetaQuotes Software Corp. Manual trading.
我在市场上按" 买入 "键,不设止损和 TP。显示一条消息,订单已排队......连接中断......恢复......订单未执行。
这个队列是什么?它位于何处?如果服务器已经接受了订单,为什么没有执行?原因是什么?
看到最后两行了吗?
应该是
history_orders=HistoryOrdersTotal(); // 好的,看起来是正确的
deals=HistoryDealsTotal(); // 也许是打字错误?
这篇文章介绍了异步交易事件,即使用OrderSend() 函数发送请求 时收到的订单票据与 订单在终端中出现的 时间可能不一致。这里的一切都很清楚。去年秋天,有人建议通过睡着三秒钟来克服这种不同步现象。但票面价值和订单本身出现在终端(服务器接受订单后)的保证时间是多少?如果有必要,我可以等待 20 秒,但我想知道保证 这种 "手动同步 "的时间段。
非常感谢。这真的帮我解决了一些困惑。
谢谢、
乌默尔-阿齐兹