Cómo trabajar correctamente en MT5 con OrderSend - página 12

 
prostotrader:

Respondiendo a la pregunta"Cómo trabajar correctamente en MT5 con OrderSend"

La respuesta es sencilla.

Hasta que los desarrolladores arreglen el problema, entonces

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;
   }
}

Y cuando lo son, entonces

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


Tengo la impresión general de que el 5 es crudo, crudo...
 
Maxim Kuznetsov:
Tengo la impresión general de que el 5 es crudo, crudo...

Nadie es inmune a los errores.

Otra cosa es que los errores tardan mucho en corregirse.

 
prostotrader:

Respondiendo a la pregunta"Cómo trabajar correctamente en MT5 con OrderSend"

La respuesta es sencilla.

Hasta que los desarrolladores lo arreglen

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;
   }
}

¿Y si el paquete OrderSend?

Y cuando esté arreglado, entonces

No lo harán. Es un chip.
 
fxsaber:

¿Qué pasa si un paquete de OrderSend?


Quien se lleve un fajo de billetes se llevará un fajo de agua.
 

Para los amantes del 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();////////
  }
}
 

O así

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:

No lo harán. Es un chip.

Es una pena que los desarrolladores no comenten la situación de OrderSend().

¿Es un "chip" o lo van a arreglar?

 
fxsaber:

No lo harán. Es un chip.

SD dijo que a partir de la próxima build OrderSend() funcionará correctamente :)
 
prostotrader:
SD responde que OrderSend() funcionará correctamente en la próxima compilación :)
Qué diversión tienen allí

posiciones abiertas la estructura completa de la operación o posición".

 

Sin embargo, obtuve la respuesta que escribí arriba.

Tal vez no escribiste de forma muy convincente o no expusiste el argumento de la falta de función.

Razón de la queja: