How to work correctly in MT5 with OrderSend - page 12

 
prostotrader:

Answering the question"How to work correctly in MT5 with OrderSend"

There is a simple answer.

Until the developers fix the problem, then

ulong pre_ticket; //Предварительный тикет
ulong order_ticket; //Тикет ордера
//---
if(OrderSend(request,result))
  {
    if(result.retcode==TRADE_RETCODE_DONE)
    {
      pre_ticket=result.order;
    }  
  }
//----------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
{
   switch(trans.type)
   {
     case TRADE_TRANSACTION_ORDER_UPDATE:
       if((pre_ticket>0) && (trans.order==pre_ticket))
       {
         switch(trans.order_state)
         {
           case ORDER_STATE_PLACED:
             order_ticket = pre_ticket;
           break;
         }
       }
     break;
   }
}

When they do, then

ulong order_ticket; //Тикет ордера
//---
if(OrderSend(request,result))
  {
    if(result.retcode==TRADE_RETCODE_DONE)
    {
      order_ticket=result.order;
    }  
  }


I have the general impression that 5 is raw, raw...
 
Maxim Kuznetsov:
I have the general impression that the 5 is raw, raw...

No one is immune to mistakes.

Another thing is that mistakes take a very long time to correct.

 
prostotrader:

Answering the question"How to work correctly in MT5 with OrderSend"

There is a simple answer.

Until the developers fix it

ulong pre_ticket; //Предварительный тикет
ulong order_ticket; //Тикет ордера
//---
if(OrderSend(request,result))
  {
    if(result.retcode==TRADE_RETCODE_DONE)
    {
      pre_ticket=result.order;
    }  
  }
//----------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
{
   switch(trans.type)
   {
     case TRADE_TRANSACTION_ORDER_UPDATE:
       if((pre_ticket>0) && (trans.order==pre_ticket))
       {
         switch(trans.order_state)
         {
           case ORDER_STATE_PLACED:
             order_ticket = pre_ticket;
           break;
         }
       }
     break;
   }
}

What if the OrderSend bundle?

And when it is fixed, then

They won't. It's a chip.
 
fxsaber:

What if an OrderSend pack?


Whoever takes a Bundle of tickets gets a Bundle of Water!
 

For lovers of PACHE

ulong pre_ticket = 0; //Претикет ордера
ulong order_ticket_1 = 0; //Тикет ордера
ulong order_ticket_2 = 0; //Тикет ордера
ulong order_ticket_3 = 0; //Тикет ордера
ulong order_ticket_4 = 0; //Тикет ордера
ulong order_ticket_5 = 0; //Тикет ордера
uint num_order = 0;
//---
if(OrderSend(request,result))
  {
    if(result.retcode==TRADE_RETCODE_DONE)
    {
      pre_ticket=result.order;
      num_order++;
    }  
  }
//----------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
{
   switch(trans.type)
   {
     case TRADE_TRANSACTION_ORDER_UPDATE:
       if((pre_ticket>0) && (trans.order==pre_ticket))
       {
         switch(trans.order_state)
         {
           case ORDER_STATE_PLACED:
             switch(num_order)
             {
               case 1:
                 order_ticket_1 = pre_ticket;
                 pre_ticket = 0;
               break;
               case 2:
                 order_ticket_2 = pre_ticket;
                 pre_ticket = 0;
               break;
               case 3:
                 order_ticket_3 = pre_ticket;
                 pre_ticket = 0;
               break;
               case 4:
                 order_ticket_4 = pre_ticket;
                 pre_ticket = 0;
               break;
               case 5:
                 order_ticket_5 = pre_ticket;
                 pre_ticket = 0;
               break;
             }
           break;
         }
       }
     break;
   }
}
void OnTick()
{
  if(pre_ticket == 0)
  {
    OrderSend();////////
  }
}
 

Or like this

ulong pre_ticket = 0; //Претикет ордера
ulong order_ticket_1 = 0; //Тикет ордера
ulong order_ticket_2 = 0; //Тикет ордера
ulong order_ticket_3 = 0; //Тикет ордера
ulong order_ticket_4 = 0; //Тикет ордера
ulong order_ticket_5 = 0; //Тикет ордера
uint num_order = 0;
//---
if(OrderSend(request,result))
  {
    if(result.retcode==TRADE_RETCODE_DONE)
    {
      pre_ticket=result.order;
      num_order++;
    }  
  }
//----------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
{
   switch(trans.type)
   {
     case TRADE_TRANSACTION_ORDER_UPDATE:
       if((pre_ticket>0) && (trans.order==pre_ticket))
       {
         switch(trans.order_state)
         {
           case ORDER_STATE_PLACED:
             switch(num_order)
             {
               case 1:
                 order_ticket_1 = pre_ticket;
                 pre_ticket = 0;
                 OrderSend();
               break;
               case 2:
                 order_ticket_2 = pre_ticket;
                 pre_ticket = 0;
                 OrderSend();
               break;
               case 3:
                 order_ticket_3 = pre_ticket;
                 pre_ticket = 0;

                 OrderSend(); 

               break;
               case 4:
                 order_ticket_4 = pre_ticket;
                 pre_ticket = 0;
                 OrderSend();
               break;
               case 5:
                 order_ticket_5 = pre_ticket;
                 pre_ticket = 0;
               break;
             }
           break;
         }
       }
     break;
   }
}
 
fxsaber:

They won't. It's a chip.

It's a pity the developers don't comment on OrderSend() situation.

Is it a "chip" or will they fix it?

 
fxsaber:

They won't. It's a chip.

SD said that from the next build OrderSend() will work properly :)
 
prostotrader:
SD replies that OrderSend() will work properly in the next build :)
What fun they have there

open positions the complete structure of the trade or position".

 

Nevertheless, I got the answer I wrote above.

Maybe you didn't write very convincingly or you didn't make the argument about the lack of function.