Two questions:
1. Don't you want a total for the current orders matching the condition? Why looking in the history?
2. If you want the volume for these orders, why not make a function like that, to be called only once , and modifications to the volume to be operated straight in a OnTrade event() ?
ok, I will made a function and use OrderSelect
input long order_magic=55555;
void OnTrade()
{
if(AccountInfoInteger(ACCOUNT_TRADE_MODE)==ACCOUNT_TRADE_MODE_REAL)
{
Alert("Script operation is not allowed on a live account!");
return;
}
//--- place or delete order
if(GetOrdersTotalByMagic(order_magic)==0)
{
//--- no current orders - place an order
int res=SendRandomPendingOrder(order_magic);
Print("Return code of the trade server",res);
}
else // there are orders - delete orders
{
DeleteAllOrdersByMagic(order_magic);
}
}
//+------------------------------------------------------------------+
//| receive the current number of orders with specified ORDER_MAGIC |
//+------------------------------------------------------------------+
int GetOrdersTotalByMagic(long const magic_number)
{
long order_ticket;
int total=0;
//--- selection through the entire history
HistorySelect(0,TimeCurrent());
//--- go through all pending orders
for(int i=0;i<OrdersTotal();i++)
if(order_ticket=OrderGetTicket(i))
if(magic_number==OrderGetInteger(ORDER_MAGIC)) total++;
//---
return(total);
}
after I look the mql5 reference
i find it is hard to find orders type, because need to have many lines of code
type=GetOrderType(HistoryOrderGetInteger(ticket,ORDER_TYPE));
string GetOrderType(long type)
{
string str_type="unknown operation";
switch(type)
{
case (ORDER_TYPE_BUY): return("buy");
case (ORDER_TYPE_SELL): return("sell");
case (ORDER_TYPE_BUY_LIMIT): return("buy limit");
case (ORDER_TYPE_SELL_LIMIT): return("sell limit");
case (ORDER_TYPE_BUY_STOP): return("buy stop");
case (ORDER_TYPE_SELL_STOP): return("sell stop");
case (ORDER_TYPE_BUY_STOP_LIMIT): return("buy stop limit");
case (ORDER_TYPE_SELL_STOP_LIMIT):return("sell stop limit");
}
return(str_type);
}
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
how can i find a specific magic_nub order by not using loop(for)
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int GetOrdersTotalByMagic(long const magic_number)
{
long order_ticket;
int total=0;
//--- selection through the entire history
HistorySelect(0,TimeCurrent());
//--- go through all pending orders
for(int i=0;i<OrdersTotal();i++)
if(order_ticket=OrderGetTicket(i))
if(magic_number==OrderGetInteger(ORDER_MAGIC)) total++;
//---
return(total);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
any include file(.MQH) have include above?