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()