Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1715

 
MakarFX #:
PM

comprueba tu cartera)

 
Alexey Viktorov #:

Me encontré con esto en un hilo

Lo copié, lo miré, no entendí nada, lo comenté y lo olvidé.

Ahora me he acordado, lo he encontrado en mis códigos de prueba, pero no lo encuentro en el foro. No entiendo cómo funcionan las macros, quizá alguien pueda explicar cómo funciona o encontrar el tema del que lo he copiado...

En general necesito definir de alguna manera la macro sustitución.........

Todo esto funciona en la fase de compilación, pero no mientras se carga el programa

 

¡¡¡¡Buenos días a todos !!!!

¿Podría decirme cuál es el número del penúltimo billete?

Existe una función para determinar la última orden:

//+----------------------------------------------------------------------------+
//| Расчет тикета максимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
int GetTicketMaxOrder()
  {
   max_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                  if(OrderTicket() > max_ticket)
                     max_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return(max_ticket);
  }

Una variante para aplicar esta función y suponer -1 de max_ticket no funciona porque el EA negocia varios instrumentos y puede ocurrir que entre la última y la penúltima orden se abra una orden de otro instrumento.

Necesito que el pedido sea seleccionado de entre todos los pedidos menos el máximo de los que quedan o el siguiente billete más alto después del máximo o puede ser su decisión. Gracias.

 
Vitaly Muzichenko #:

Todo esto funciona en tiempo de compilación, pero no cuando se carga el programa

¿La carga de un programa no depende de cómo se compila?

 
EVGENII SHELIPOV #:

¡¡¡¡Buenos días a todos !!!!

Esta función no puede funcionar correctamente

int GetTicketMaxOrder()
  {
   max_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
           {
 
MakarFX #:

Esta función no puede funcionar correctamente.

Sí Makar tienes razón como siempre se puede arreglar pero curiosamente esta función funciona como un reloj

 
MakarFX #:

Exactamente.

¿Es posible hacerlo a través de?

La única salida es escribir su propio panel de parámetros y utilizarlo desde OnInit() en lugar de usar el mecanismo estándar de parámetros de entrada.
 
Sergey Gridnev #:
La única salida es escribir su propio panel de parámetros y utilizarlo desde OnInit() en lugar de usar el mecanismo estándar de parámetros de entrada.

¡Interesante idea! Gracias.

No, no es interesante.

Cada vez que cambias de nuevo los plazos, no es agradable entrar en la configuración(

 
EVGENII SHELIPOV #:

Sí Makar tienes razón como siempre se puede arreglar pero curiosamente esta función funciona como un reloj

Funcionó como un reloj porque estabas buscando la última orden de max_ticket

no pudiste encontrar otro billete.

 
EVGENII SHELIPOV #:

¡¡¡¡Buenos días a todos !!!!

¿Puede decirme el número del penúltimo billete?

Es posible memorizar un billete antes de abrir un nuevo pedido.