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