HistoryOrderSelect

更に適切な関数で呼び出すために履歴内の注文を選択します。関数実行が成功した場合は true を返します。関数実行が失敗した場合 false を返します。エラーの詳細については GetLastError() を呼びます。

bool  HistoryOrderSelect(
  ulong  ticket      // 注文チケット
  );

パラメータ

ticket

[in]  注文チケット

戻り値

成功の場合は true、それ以外の場合は false。

注意事項

取引履歴の注文を「ツールボックス」バーの「取引」タブに表示される未決注文 と混乱してはいけません。取り消されたまたはトランザクションにつながった 注文のリストはクライアント端末の「ツールボックス」バーの「履歴」タブで見られます。

HistoryOrderSelect() はMQL5 プログラムで参照出来る注文のリストをクリアして、成功した場合、1 つの注文を複製します。HistorySelect()関数で選ばれた約定を1つずつ参照する必要がある場合には HistoryOrderGetTicket() が使用されるべきです。

例:

#define   TICKET   1819621374   // 端末の口座履歴などからの、既知の注文のチケット
//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- TICKETで指定されたチケットに基づいて、過去の注文を選択する
  if(!HistoryOrderSelect(TICKET))
    {
    PrintFormat("HistoryOrderSelect(%I64u) failed. Error %d", TICKET, GetLastError());
    return;
    }
 
//--- 注文が正常に選択された場合、そのデータを取得し、注文の説明を操作ログに表示する
  ENUM_ORDER_TYPE   order_type  = (ENUM_ORDER_TYPE)HistoryOrderGetInteger(TICKET, ORDER_TYPE);
  ENUM_ORDER_STATE order_state = (ENUM_ORDER_STATE)HistoryOrderGetInteger(TICKET, ORDER_STATE);
  ENUM_ORDER_REASON order_reason= (ENUM_ORDER_REASON)HistoryOrderGetInteger(TICKET, ORDER_REASON);
  long             order_time  = HistoryOrderGetInteger(TICKET, ORDER_TIME_SETUP_MSC);
  string           order_symbol=HistoryOrderGetString(TICKET, ORDER_SYMBOL);
  double           order_vol_init=HistoryOrderGetDouble(TICKET, ORDER_VOLUME_INITIAL);
  double           order_vol_curr=HistoryOrderGetDouble(TICKET, ORDER_VOLUME_CURRENT);
  PrintFormat("%s Order %.2f/%s %s #%I64u %s by %s at %s",
              order_symbol, order_vol_init, (order_vol_curr>0 ? DoubleToString(order_vol_curr,2) : "0"),
              OrderTypeDescription(order_type), TICKET, OrderStateDescription(order_state),
              OrderReasonDescription(order_reason), TimeMscToString(order_time));
  /*
  result for various specified tickets:
  EURUSD Order 0.50/0.50 Buy Limit #2812894647 Canceled by Client at 2024.09.04 19:02:31.793
  EURUSD Order 0.10/0 Sell #1753011743 Filled by Take Profit at 2023.06.12 17:04:20.353
  GBPUSD Order 0.10/0 Buy #1819621374 Filled by Client at 2023.07.24 06:16:25.746
  */
 }
//+------------------------------------------------------------------+
//| 注文タイプの説明を返す                                                 |
//+------------------------------------------------------------------+
string OrderTypeDescription(const ENUM_ORDER_TYPE type)
 {
  switch(type)
    {
    case ORDER_TYPE_BUY              : return("Buy");
    case ORDER_TYPE_SELL             : return("Sell");
    case ORDER_TYPE_BUY_LIMIT        : return("Buy Limit");
    case ORDER_TYPE_SELL_LIMIT       : return("Sell Limit");
    case ORDER_TYPE_BUY_STOP         : return("Buy Stop");
    case ORDER_TYPE_SELL_STOP        : return("Sell Stop");
    case ORDER_TYPE_BUY_STOP_LIMIT   : return("Buy Stop Limit");
    case ORDER_TYPE_SELL_STOP_LIMIT  : return("Sell Stop Limit");
    default                          : return("Unknown order type: "+(string)type);
    }
 }
//+------------------------------------------------------------------+
//| 注文ステータスの説明を返す                                              |
//+------------------------------------------------------------------+
string OrderStateDescription(ENUM_ORDER_STATE state)
 {
  switch(state)
    {
    case ORDER_STATE_STARTED         : return("Started");
    case ORDER_STATE_PLACED          : return("Placed");
    case ORDER_STATE_CANCELED        : return("Canceled");
    case ORDER_STATE_PARTIAL         : return("Partial");
    case ORDER_STATE_FILLED          : return("Filled");
    case ORDER_STATE_REJECTED        : return("Rejected");
    case ORDER_STATE_EXPIRED         : return("Expired");
    case ORDER_STATE_REQUEST_ADD     : return("Request Add");
    case ORDER_STATE_REQUEST_MODIFY  : return("Request Modify");
    case ORDER_STATE_REQUEST_CANCEL  : return("Request Cancel");
    default                          : return("Unknown state: "+(string)state);
    }
 }
//+------------------------------------------------------------------+
//| 注文理由の説明を返す                                                 |
//+------------------------------------------------------------------+
string OrderReasonDescription(const ENUM_ORDER_REASON reason)
 {
  switch(reason)
    {
    case ORDER_REASON_CLIENT   : return("Client");
    case ORDER_REASON_MOBILE   : return("Mobile");
    case ORDER_REASON_WEB      : return("Web");
    case ORDER_REASON_EXPERT   : return("Expert");
    case ORDER_REASON_SL       : return("Stop Loss");
    case ORDER_REASON_TP       : return("Take Profit");
    case ORDER_REASON_SO       : return("Stop Out");
    default                    : return("Unknown reason: "+(string)reason);
    }
 }
//+------------------------------------------------------------------+
//| ミリ秒で時間を返す                                                    |
//+------------------------------------------------------------------+
string TimeMscToString(const long time_msc, int flags=TIME_DATE|TIME_MINUTES|TIME_SECONDS)
 {
  return(TimeToString(time_msc/1000, flags) + "." + IntegerToString(time_msc %1000, 3, '0'));
 }

参照

HistorySelect()HistoryOrderGetTicket()注文プロパティ