OrderGetTicket
OrderGetTicket
返回类似订单票据,使用函数自动选择订单工作.
ulong OrderGetTicket(
int index // 订单列表中的数量
);参量
- index
[in] 当前订单列表中的订单数量。
返回值
无符长整型 值。如果函数失败,返回0。
注释
不要使仓位挂单混乱,它显示在客户端“工具箱”的“交易”标签中。订单是交易要求,而仓位就是一个或者多个交易的结果。
对于"单边" 持仓 (ACCOUNT_MARGIN_MODE_RETAIL_NETTING 和 ACCOUNT_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)// 下订单时间
);
}
}
//---
}