下载MetaTrader 5
MQL5参考交易函数OrderGetTicket 

OrderGetTicket

返回类似订单票据,使用函数自动选择订单工作.

ulong  OrderGetTicket(
   int  index      // 订单列表中的数量
   );

参量

index

[in]  当前订单列表中的订单数量。

返回值

无符长整型 值。如果函数失败,返回0。

注释

不要使仓位挂单混乱,它显示在客户端“工具箱”的“交易”标签中。订单是交易要求,而仓位就是一个或者多个交易的结果。

对于"单边" 持仓 (ACCOUNT_MARGIN_MODE_RETAIL_NETTINGACCOUNT_MARGIN_MODE_EXCHANGE),无论任何时候一个交易品种只能存在一个持仓 。该持仓是一个或多个交易的结果。请不要混淆也显示在工具箱窗口交易标签中的有效挂单的持仓。

如果允许单独持仓 (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING),那么可为一个交易品种打开多个持仓。

OrderGetTicket()函数复制有关订单的数据到程序环境中,远程调用OrderGetDouble()OrderGetInteger()OrderGetString(),返回先前的复制数据。表示该命令本身不存在(或者开仓价格,止损数值/目标数值水平或者届期改变),但是命令数据仍旧包含。为了确保接收订单新命令,推荐调用OrderGetTicket()命令。

示例:

void OnStart()
  {
//--- 订单属性返回值的变量
   ulong    ticket;
   double   open_price;
   double   initial_volume;
   datetime time_setup;
   string   symbol;
   string   type;
   long     order_magic;
//--- 当前挂单量
   uint     total=OrdersTotal();
//--- 反复检查通过订单
   for(uint i=0;i<total;i++)
     {
      //--- 通过列表中的仓位返回订单报价
      if(ticket=OrderGetTicket(i))
        {
         //--- 返回订单属性
         open_price    =OrderGetDouble(ORDER_PRICE_OPEN);
         time_setup    =(datetime)OrderGetInteger(ORDER_TIME_SETUP);
         symbol        =OrderGetString(ORDER_SYMBOL);
         order_magic   =OrderGetInteger(ORDER_MAGIC);
         positionID    =OrderGetInteger(ORDER_POSITION_ID);
         initial_volume=OrderGetDouble(ORDER_VOLUME_INITIAL);
         type          =EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE)));
         //--- 准备和显示订单信息
         printf("#ticket %d %s %G %s at %G was set up at %s",
                ticket,                 // 订单报价
                type,                   // 类型
                initial_volume,         // 已下交易量
                symbol,                 // 交易品种
                open_price,             // 规定的开盘价
                TimeToString(time_setup)// 下订单时间
                );
        }
     }
//---
  }

另见

OrdersTotal()OrderSelect()OrderGetInteger()