跳至内容

OrderSelect

OrderSelect

此函数选择订单以进行进一步处理。

bool  OrderSelect(
   int     index,            // index or order ticket
   int     select,           // flag
   int     pool=MODE_TRADES  // mode
   );

参数

ticket

[in] 订单索引或订单票证,取决于第二个参数。

select

[in] 选择标志。可以是以下值之一:

SELECT_BY_POS - 订单池中的索引, SELECT_BY_TICKET - 订单票证中的索引。

pool=MODE_TRADES

[in] 可选的订单池索引。当所选参数为SELECT_BY_POS时使用。可以是以下值之一:

MODE_TRADES(默认)- 从交易池中选出的订单(已开放和待处理订单), MODE_HISTORY - 从历史池中选出的订单(已关闭和取消的订单)。

返回值

如果函数成功,则返回true,否则返回falses。要获取错误信息,必须调用GetLastError()函数。

注意

如果通过票证号选择订单,则忽略pool参数。票证号是唯一的订单标识符。

要了解订单是从哪个列表中选出的,必须分析其关闭时间。如果订单的关闭时间等于0,则该订单是开放或待处理订单,并从终端开放订单列表中选取。

可以通过订单类型区分开放订单和待处理订单。如果订单的关闭时间不等于0,则该订单是已关闭订单或已删除的待处理订单,并从终端历史中选取。它们也因订单类型而有所不同。

OrderSelect()函数将订单数据复制到程序环境中,所有后续的OrderClosePrice()OrderCloseTime()OrderComment()OrderCommission()OrderExpiration()OrderLots()OrderMagicNumber()OrderOpenPrice()OrderOpenTime()OrderPrint()OrderProfit()OrderStopLoss()OrderSwap()OrderSymbol()OrderTakeProfit()OrderTicket()OrderType()函数将之前复制的数据返回。这意味着在某些情况下,订单详情(开放价格、SL/TP水平或到期日期)可能会发生变化,数据变得不真实。强烈建议在请求订单数据之前调用OrderSelect()函数。

使用SELECT_BY_POS参数连续选择订单时,会按从交易服务器接收的顺序返回信息。无法保证排序后的订单列表的顺序性。

示例:

if(OrderSelect(12470, SELECT_BY_TICKET)==true)
    {
     Print("order #12470 open price is ", OrderOpenPrice());
     Print("order #12470 close price is ", OrderClosePrice());
    }
  else
    Print("OrderSelect returned the error of ",GetLastError());

另请参阅

Order属性OrderClosePrice()OrderCloseTime()OrderComment()OrderCommission()OrderExpiration()OrderLots()OrderMagicNumber()OrderOpenPrice()OrderOpenTime()OrderPrint()OrderProfit()OrderStopLoss()OrderSwap()OrderSymbol()OrderTakeProfit()OrderTicket()OrderType()

最后更新于