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

 
Artyom Trishkin #:
Y lo fácil que es armar una matriz y ordenar por el criterio correcto. Pero durante 100500 páginas hemos estado muleteando en los talones.
Por favor, muéstrame un ejemplo en código. No sé cómo apilar en un array y luego ordenar también.
 
Alexey Viktorov #:
Al fin y al cabo, es más fácil y rápido comprobarlo que esperar la respuesta de otra persona...

Mis conocimientos de mql son demasiado pequeños) ciertamente puedo intentarlo, pero me llevará mucho tiempo) así que es mejor averiguar de antemano si es posible que gastar mucho tiempo y descubrir que no se puede hacer)
cuando tenga más tiempo libre, ciertamente será más fácil intentarlo yo mismo, pero por ahora prefiero preguntar a gente más experimentada si se puede hacer.

 
Scarick #:

Mis conocimientos de mql son demasiado pequeños) ciertamente puedo intentarlo, pero me llevará mucho tiempo) así que es mejor averiguar de antemano si es posible hacer algo, que gastar mucho tiempo y descubrir que no se puede hacer)
cuando tenga más tiempo libre, ciertamente será más fácil intentarlo, pero por ahora prefiero preguntar a gente más experimentada si se puede hacer.

Si sus habilidades no son demasiado grandes, pero su pensamiento lógico funciona, ¿qué se puede entender de esta pregunta?

Foro sobre trading, sistemas de trading automatizados y prueba de estrategias de trading.

Cualquier pregunta de los principiantes sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos

Scarick, 2021.11.06 17:01

En otras palabras, si firmo 5 símbolos en un indicador, ¿puedo trabajar con los 5 símbolos a través de un OnBookEvent()? Lo único importante es filtrar por qué personaje se produjo el cambio?

entonces lo más fiable es comprobarlo, no esperar una respuesta positiva de otra persona. Por eso respondí como lo hice.
 
MakarFX #:
Por favor, muéstrame un ejemplo en código. No sé cómo apilar en un array y luego ordenar también.

Mira aquíhttp://www.mql5.com/ru/articles/1404 No hay ordenación, pero se apila en un array.

Управление ордерами – это просто
Управление ордерами – это просто
  • www.mql5.com
Статья описывает разнообразные способы контроля открытых позиций и отложенных ордеров и призвана облегчить написание экспертов.
 
MakarFX #:
Muéstrame un ejemplo en código, por favor. No sé cómo apilar en un array y luego también ordenar.

bool BubleSort(struct &arr[])

{

for(int i = ArraySize(arr)-1;i>=0;i--)
for(int j = i-1;j>=0;j--) {

if (Compare(arr[i],arr[j])<0 ) Swap(arr[i],arr[j]);

}

}

que se joda, vaya a la escuela... esos micro-algoritmos se escriben de memoria con un ojo cerrado.

En serio: haz un curso de algoritmos o algo así...

 
Alexey Viktorov #:

En su caso, si las habilidades no son grandes pero el pensamiento lógico funciona, como se puede deducir de esta pregunta

entonces lo más fiable es comprobarlo en lugar de esperar una respuesta positiva de otra persona. Por eso respondí como lo hice.
Sí, ya he descubierto cómo intentarlo con menos trabajo. Pero no se puede comprobar a través de un probador. Tengo que esperar días laborables. Pero podrías haber contestado directamente) No te estoy pidiendo que escribas el código por mí, sólo he hecho una pregunta.
 

Maxim Kuznetsov #:

jódete - vete a la escuela... tales micro-algoritmos se escriben de memoria y borrachos, con un ojo cerrado

En serio, haz un curso de algoritmos o algo así.

Interesante forma de hablar... no deberías haberte molestado

 
MakarFX #:

Interesante forma de hablar... no deberías haberte molestado

De manera normal - se le da un algoritmo de ordenación. Muy bien, la clasificación normal de las burbujas. Nadie se esforzaba.

Y el mensaje normal es realmente - leer sobre algoritmos

Lee ya la literatura.

 

¡¡¡¡Buenos días señores programadores!!!!

Intentaré una vez más formular mi pregunta, pero la he reformulado un poco.

En un EA de rejilla, tenemos que encontrar el billete del penúltimo orden. Una solución de -1 de la entrada de la orden máxima no funciona en el probador de la estrategia, tal vez, pero no va a funcionar en una cuenta demo o real, por lo que adjunto una imagen, será claro por qué.

He escrito el código de la función que determina el penúltimo ticket de pedido. La lógica es la siguiente: si buscamos entre todas las órdenes abiertas en la parrilla, encontraremos la máxima que le sigue y será la entrada de la orden necesaria.

Sin embargo, mi nivel de programación no es lo suficientemente alto y hay algún error en el código. El resultado de esta función es el billete mínimo. Estas dos funciones billete máximo y billete penúltimo. La función de ticket máximo funciona sin problemas.

//+----------------------------------------------------------------------------+
//| Расчет тикета предпоследнего ордера в сетке                                |
//+----------------------------------------------------------------------------+
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);
  }
//+----------------------------------------------------------------------------+
//| Расчет тикета максимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
int GetTicketMaxOrder()
  {
   max_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() > max_ticket)
                     max_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return(max_ticket);
  }

Por favor, indique cuál es el error. Gracias.

 
Scarick #:
Sí, ya he descubierto cómo intentarlo con menos esfuerzo. Pero no puedo verificarlo con un probador. Tengo que esperar días laborables. Pero podrías responder directamente) No estoy pidiendo que escribas el código por mí, sólo he hecho una pregunta.

Ahí tienes... No quería ofenderte. ¿Qué diferencia haría una respuesta positiva? Al fin y al cabo, hay que escribir y comprobar sólo durante las horas de trabajo.

Razón de la queja: