HistoryOrderGetString

返回订单要求属性,订单属性一定是字符串类型,有2个变量函数可供使用。

1. 立即返回属性值。

string  HistoryOrderGetString(
   ulong                       ticket_number,     // 订单号
   ENUM_ORDER_PROPERTY_STRING  property_id        // 属性标识符
   );

2. 依据函数成功与否返回真值或者错误值。如果成功,目标变量的属性值通过引用传递到最后参量。

bool  HistoryOrderGetString(
   ulong                       ticket_number,     // 订单号
   ENUM_ORDER_PROPERTY_STRING  property_id,       // 属性标识符
   string&                     string_var         // 这里接受属性值
   );

参量

ticket_number

[in] 订单号。

property_id

[in]  订单属性标识符。值可以是 ENUM_ORDER_PROPERTY_STRING 列举值中的一个。

string_var

[out]  字符串型变量。

返回值

字符串 型值。

注释

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

示例:

//+------------------------------------------------------------------+
//| 脚本程序起始函数                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 请求交易和订单历史
   if(!HistorySelect(0TimeCurrent()))
     {
      Print("HistorySelect() failed. Error "GetLastError());
      return;
     }
     
//--- 在账户的全部历史订单中做循环
   int total=HistoryOrdersTotal();
   for(int i=0i<totali++)
     {
      //--- 根据循环索引取得列表中的订单编号
      ulong ticket=HistoryOrderGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- 取得订单类型并显示用于选中订单字符串型属性列表的标题
      string type=OrderTypeDescription((ENUM_ORDER_TYPE)HistoryOrderGetInteger(ticketORDER_TYPE));
      PrintFormat("String properties of an history order %s #%I64u:"typeticket);
      
      //--- 在标题下方打印选中订单的所有字符串型属性
      HistoryOrderPropertiesStringPrint(ticket16);
     }
   /*
  结果:
   String properties of an history order Buy #2646074112:
   Comment:        [tp 1.09137]
   Symbol:         EURUSD
   External ID:    
   String properties of an history order Buy #2646131906:
   Comment:        
   Symbol:         EURUSD
   External ID:    
   */
  }
//+------------------------------------------------------------------+
//| 显示字符串型属性                                                   |
//| 适用于日志和选中的历史订单                                           |
//+------------------------------------------------------------------+
void HistoryOrderPropertiesStringPrint(const long ticketconst uint header_width=0)
  {
   uint   w=0;
   string header="";
   string value="";
   
//--- 定义标题文字和标题栏位的宽度
//--- 如果传给函数的标题宽度为0, 则宽度为标题文字行的大小+1
   header="Comment:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- 取得并在日志中使用指定的标题宽度显示注释
   if(!HistoryOrderGetString(ticketORDER_COMMENTvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- 在日志中显示所下订单的交易品种
   header="Symbol:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetString(ticketORDER_SYMBOLvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- 在日志中显示在外部系统中的订单 ID
   header="External ID:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetString(ticketORDER_EXTERNAL_IDvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
  }
//+------------------------------------------------------------------+
//| 返回订单类型的描述                                                  |
//+------------------------------------------------------------------+
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);
     }
  }

另见

HistorySelect()HistoryOrdersTotal()HistoryOrderSelect()订单属性