HistoryOrderSelect

从历史中选择订单,彻底调用适当函数。如果函数成功完成,返回真值,如果函数返回失败显示错误值。更多错误订单调用 GetLastError()

bool  HistoryOrderSelect(
   ulong  ticket      // 订单号
   );

参量

ticket

[in]  订单号。

返回值

如果成功,返回真值,否则返回错误值。

注释

不能把出现在客户端"工具箱"的"交易" 标签中的当前挂单和交易历史订单弄乱。取消的或者导致的交易的订单列表可以在"工具箱"客户端中的"历史记录"标签浏览。

HistoryOrderSelect()在MQL5程序从历史记录中删除一系列订单,如果成功执行HistoryOrderSelect (),可用调用和复制的单个字节,如果需要通过 HistorySelect()运行所有订单,最好使用 HistoryOrderGetTicket()

示例:

#define   TICKET    1819621374   // 任何已知订单的编号, 例如来自账户历史中的订单
//+------------------------------------------------------------------+
//| 脚本程序起始函数                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 根据在 TICKET中指定的编号选择历史订单
   if(!HistoryOrderSelect(TICKET))
     {
      PrintFormat("HistoryOrderSelect(%I64u) failed. Error %d"TICKETGetLastError());
      return;
     }
 
//--- 如果订单成功选中, 就取得它的数据并在日志中显示订单的描述
   ENUM_ORDER_TYPE   order_type  = (ENUM_ORDER_TYPE)HistoryOrderGetInteger(TICKETORDER_TYPE);
   ENUM_ORDER_STATE  order_state = (ENUM_ORDER_STATE)HistoryOrderGetInteger(TICKETORDER_STATE);
   ENUM_ORDER_REASON order_reason= (ENUM_ORDER_REASON)HistoryOrderGetInteger(TICKETORDER_REASON);
   long              order_time  = HistoryOrderGetInteger(TICKETORDER_TIME_SETUP_MSC);
   string            order_symbol=HistoryOrderGetString(TICKETORDER_SYMBOL);
   double            order_vol_init=HistoryOrderGetDouble(TICKETORDER_VOLUME_INITIAL);
   double            order_vol_curr=HistoryOrderGetDouble(TICKETORDER_VOLUME_CURRENT);
   PrintFormat("%s Order %.2f/%s %s #%I64u %s by %s at %s",
               order_symbolorder_vol_init, (order_vol_curr>0 ? DoubleToString(order_vol_curr,2) : "0"),
               OrderTypeDescription(order_type), TICKETOrderStateDescription(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_mscint flags=TIME_DATE|TIME_MINUTES|TIME_SECONDS)
  {
   return(TimeToString(time_msc/1000flags) + "." + IntegerToString(time_msc %10003, '0'));
  }

另见

HistorySelect()HistoryOrderGetTicket()订单属性