MT5的订单分为:在途,挂单,历史三种类型的订单,他们对应不同的查询方法。每一种类型的订单信息查询都遵守一个固定的步骤:
1、统计特定种类的订单总数
2、循环每一个订单,这个步骤里需要选中某一个订单然后才有后续的动作
3、调用不同的获取订单属性方法获取订单信息
在途订单查询
在途订单统计
在途订单统计使用int OrdersTotal();
方法进行统计,他返回当前持仓总数,它统计的是下图中的订单总数:
选中某一个订单
对于在途订单来说,根据顺序选中某张订单需要使用ulong OrderGetTicketint index);
来获取订单的订单号(TickId),最后调用bool OrderSelect(ulong ticket);
来定位某一张订单。
获取订单信息
订单的信息包括字符型、整型、双精度类型三种属性。分别使用OrderGetString
、OrderGetInteger
、OrderGetDouble
三个方法,在订单被选中的情况,这三个方法需要传入需要查询的属性值。
举例说明
这个例子说明说明的是匹配当前图表上产生的特定(MAGIC number)在途订单
bool findMyActionOrder() {
int orders_total = OrdersTotal();
bool is_found = false;
for(int action_order_index = 0; action_order_index < orders_total;
action_order_index++) {
ulong order_tick = OrderGetTicket(action_order_index);
bool is_success = getActionOrderInfo(order_tick);
if(is_success == true) {
if(m_order_magic == action_ORDER_MAGIC &&
StringCompare(m_symbol, action_ORDER_SYMBOL) == 0) {
is_found = true;
break;
}
}
}
return is_found;
}
bool getActionOrderInfo(ulong input_order_tick) {
bool is_success = false;
if(input_order_tick > 0) {
bool select_result = OrderSelect(input_order_tick);
if(select_result == true) {
action_ORDER_COMMENT = OrderGetString(ORDER_COMMENT);//订单的注释
action_ORDER_SYMBOL = OrderGetString(ORDER_SYMBOL);//订单的Symbol
action_ORDER_TICKET = OrderGetInteger