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

 
EVGENII SHELIPOV #:

Alexei, por favor, amplía la imagen.

Con el zoom. He visto exactamente lo que muestra la flecha en el segundo precio más bajo de la orden y en el ticket de la orden que no coincide con el penúltimo criterio de la orden. Ejecuta mi código y verás el billete del pedido más bajo. Puedes terminar esta función si quieres obtener no el orden de COMPRA, sino el segundo desde abajo.

 
Alexey Viktorov #:

Con el zoom. Lo que vi fue la flecha que señalaba el segundo precio más bajo del pedido y el ticket del mismo que no cumplía el criterio del penúltimo pedido. Si ejecuta mi código, verá el billete de la orden más baja. Puede desarrollar esta función para obtener no la orden BUY de abajo, sino la segunda.

Sólo puedo preguntar dónde hay un error en el código para la determinación del penúltimo ticket de pedido.

//+----------------------------------------------------------------------------+
//| Расчет тикета предпоследнего ордера в сетке                                |
//+----------------------------------------------------------------------------+
int GetTicketPenultimateOrder()
  {
   penultimate_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                  if(OrderTicket() > penultimate_ticket && penultimate_ticket != GetTicketMaxOrder())
                     penultimate_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return(penultimate_ticket);
  }
 
EVGENII SHELIPOV #:

Sólo puedo como mi pregunta ¿dónde está el error en el código para determinar el billete de la penúltima orden?

El error es que el precio de la orden no se tiene en cuenta de ninguna manera.

En algún lugar de su diálogo, hay un consejo para poner todo en un array y ordenarlo para obtener cualquier ticket por cuenta. Pero en respuesta, no entiendo cómo hacerlo.

Así

//+------------------------------------------------------------------+
//| Расчет тикета второго снизу ордера BUY в сетке                   |
//+------------------------------------------------------------------+
int GetTicketMaxOrder()
 {
  int total = OrdersTotal(),
      arrSize = 0;
  double arr[][2];
  for(int cnt = 0; cnt < total; cnt++)
   {
    if(OrderSelect(cnt, SELECT_BY_POS) && OrderSymbol() == Symbol())// && OrderMagicNumber() == Magic)
     {
      if(OrderType() == OP_BUY)
       {
        arrSize = ArrayRange(arr, 0);
        ArrayResize(arr, arrSize+1);
        arr[arrSize][0] = OrderOpenPrice();
        arr[arrSize][1] = OrderTicket();
       }
     }
   }
  ArraySort(arr);
  return((int)arr[1][1]);
 }
/*****************************End program****************************/
 
EVGENII SHELIPOV #:

Sólo puedo responder como mi pregunta, ¿dónde está el error en el código que determina el billete de la penúltima orden?

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

Y otro error garrafal es que mientras busca órdenes en el bucle, llama a una función que a su vez también busca órdenes... Y cuando la ejecución del código vuelve a la función, ya hay otra orden seleccionada... Y OrderTicket() devuelve algo muy distinto a lo esperado.

 
Alexey Viktorov #:

El error es que el precio de la orden no se tiene en cuenta de ninguna manera.

En algún lugar de su diálogo hay un consejo para poner todo en un array y ordenarlo para obtener cualquier ticket por conteo. Pero en respuesta, no entiendo cómo hacerlo.

Así

Alexey podría comentar los errores en el registro

2021.11.07 12:17:40.791 2020.01.02 06:00:00 eGriD2 EURUSD,M5: posición inicial 0 incorrecta para la función ArraySort

2021.11.07 12:17:40.791 2020.01.02 06:00:00 eGriD2 EURUSD,M5: array fuera de rango en 'eGriD2.mq4' (664,18)

2021.11.07 12:17:40.792 2020.01.02 06:00:00 Pase de prueba detenido debido a un error crítico en el EA


 
EVGENII SHELIPOV # :

Alexey, ¿podrías comentar los errores en el registro

2021.11.07 12:17:40.791 2020.01.02 06:00:00 eGriD2 EURUSD,M5: posición inicial 0 incorrecta para la función ArraySort

2021.11.07 12:17:40.791 2020.01.02 06:00:00 eGriD2 EURUSD,M5: array fuera de rango en 'eGriD2.mq4' (664,18)

2021.11.07 12:17:40.792 2020.01.02 06:00:00 El pase de prueba se ha detenido debido a un error crítico en el EA


Estos errores no son de mi código. No domino el idioma aglits, estoy utilizando el traductor interno de este sitio. Así es como se traduce.

posición inicial 0 incorrecta para la función ArraySort - posición inicial 0 incorrecta para la función ArraySort

array fuera de rango en 'eGriD2.mq4' (664,18) - array fuera de rango en 'eGriD2.mq4' (664,18)

El pase de prueba se detuvo debido a un error crítico en el EA

Así que el código en el estudio.

ps; Aunque, si se llama a esta función cuando hay menos de dos pedidos, habrá estos errores. No lo he protegido contra ......... pero supongo que debería haberlo hecho.

Esta es exactamente la razón por la que no tengo absolutamente ningún deseo de ayudar a nadie... Usted cuenta con una aplicación reflexiva de mis consejos, pero .........

 
Buenas tardes. ¿Pueden decirme cómo implementar una búsqueda mínima/máxima para n barras?
 
Snajper007 #:
Buenas tardes. ¿Pueden decirme cómo implementar una búsqueda mínima/máxima para n barras?
iHighest

iLowest

 
MakarFX

Aquí hay otra pregunta. Hay un indicador que dibuja un fractal. ¿Cómo puedo comprobar si hay señal en n barras?

 
Snajper007 #:

Aquí hay otra pregunta. Hay un indicador que dibuja un fractal. ¿Cómo puedo comprobar si hay señal en n barras?

En primer lugar, depende del indicador que dibuja los fractales
Razón de la queja: