記事"MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第5部): 取引イベントのクラスとコレクション、プログラムへのイベント送信"についてのディスカッション - ページ 2

 
Alvaro Arioni:

投稿を 編集

コードを貼り付ける際は、コードボタン(Alt+S)を使用してください。

 
Artyom Trishkin:

失われたオーダーは1つではないかもしれない

しかし、この関数は、失われた注文のうち、ゼロに最も近い1つだけを返しています。

この場合、0からstart-1まで、ブレークを挟んで反復するのと同じではないでしょうか?


ulong CHistoryCollection::OrderSearch(const int start,ENUM_ORDER_TYPE &order_type) 
  { 
   ulong order_ticket=0; 
   for(int i=0; i < start ;i++) 
     { 
      ulong ticket=::HistoryOrderGetTicket(i); 
      if(ticket==0) 
         continue; 
      ENUM_ORDER_TYPE type=(ENUM_ORDER_TYPE)::HistoryOrderGetInteger(ticket,ORDER_TYPE); 
      if(this.IsPresentOrderInList(ticket,type)) 
         continue; 
      order_ticket=ticket; 
      order_type=type; 
      break; 
     } 
   return order_ticket; 
  } 

細かいことですが、特に注文の履歴が大きすぎる場合、少し改善できるのではないかと思いました。

Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Predefined Macro Substitutions
Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Predefined Macro Substitutions
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
 
Alvaro Arioni :

しかし、この関数は 失われたオーダーのうち、ゼロに最も近い1つだけを返している。

この場合、0からstart-1までブレークしながら反復するのと同じではないか?


細かいことですが、特に注文の履歴が大きすぎる場合、少し改善できるのではないかと思いました。

わかりました、ありがとうございます。

break」が役に立つかもしれません。