文章 "MetaTrader 5 中的交易事件" - 页 3

 

Renat:
Конечно после принятия сервером - это же очевидно. Кроме того, функция называется OrderSEND.

好的,我明白了!

至于 "显而易见"--这主要是针对那些与系统密切合作一年以上的人而言。我偶然发现,参考书中的一句话(对于OrderSend() 函数,"如果结构的基本检查成功,则返回true")是否可以被视为返回 true 的充分条件。现在事实证明,不能:它只是一个必要条件,而不是充分条件。

 
Interesting:
在我看来,你不应该只从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。显示一条消息,订单已排队......连接中断......恢复......订单未执行。

这个队列是什么?它位于何处?如果服务器已经接受了订单,为什么没有执行?原因是什么?

 
链接为俄文网站!
 
这篇文章确实不错。
 
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();
     }
  }

看到最后两行了吗?

应该是

history_orders=HistoryOrdersTotal(); // 好的,看起来是正确的

deals=HistoryDealsTotal(); // 也许是打字错误?

 

这篇文章介绍了异步交易事件,即使用OrderSend() 函数发送请求 时收到的订单票据 订单在终端中出现的 时间可能不一致。这里的一切都很清楚。去年秋天,有人建议通过睡着三秒钟来克服这种不同步现象。但票面价值和订单本身出现在终端(服务器接受订单后)的保证时间是多少?如果有必要,我可以等待 20 秒,但我想知道保证 这种 "手动同步 "的时间段。

 

非常感谢。这真的帮我解决了一些困惑。

谢谢、

乌默尔-阿齐兹