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

 
¡¡Tarde!!

Me he dado cuenta de que estoy teniendo problemas para recorrer los pedidos desde j=0 hasta j=OrdersTotal() - el recuento sigue saliendo (ver pr).
Y puede que no empiece en 0 y salte por unas cuantas decenas.
Lo más probable es que se reanude con cada nuevo tick, pero no está claro por qué no empieza en 0, sino que salta a través de varios números y cómo tratar con ello.

¿Alguien se ha encontrado con este problema? ¿Cuál es la solución a esta situación?
Archivos adjuntos:
test.jpg  82 kb
 
Algotrader18:
¡¡Tarde!!

Me he dado cuenta de que no soy capaz de recorrer los pedidos desde j=0 hasta j=OrdersTotal() - el recuento se sigue estropeando (ver el anterior).
Y puede que no empiece en 0 y salte por unas cuantas decenas.
Lo más probable es que se reanude con cada nuevo tick, pero no está claro por qué no empieza en 0, sino que salta a través de varios números y cómo tratar con ello.

¿Alguien se ha encontrado con este problema? ¿Cuál es la solución a esta situación?

Los pedidos deberían enumerarse en un bucle, no en cada tic... Para ser más precisos, llegó un tick y todas sus órdenes se cuentan en el bucle: for(j=0;j<OrderTotal;j++)

OrdersTotal() muestra cuántas órdenes están abiertas (incluyendo órdenes pendientes, incluyendo órdenes en todos los símbolos... en total... Aquí se muestra cuántas órdenes se abren en el terminal, es decir, cuántas )))).

La numeración de los pedidos es como en las matrices, de 0 a OrdersTotal()-1 - este es el último pedido, y probablemente tenga un número de ticket inexistente [OrdersTotal()] o alguna otra información difícil de adivinar.

 

¡Buenas tardes!


¿Pueden decirme cuántos caracteres puede tener un comentario en un pedido?

 
Algotrader18:
¡¡Tarde!!

Me he dado cuenta de que estoy teniendo problemas para recorrer los pedidos desde j=0 hasta j=OrdersTotal() - el recuento sigue saliendo (ver pr).
Y puede que no empiece en 0 y salte por unas cuantas decenas.
Lo más probable es que se reanude con cada nuevo tick, pero no está claro por qué no empieza en 0, sino que salta a través de varios números y cómo tratar con ello.

¿Alguien se ha encontrado con este problema? ¿Cuál es la salida a esta situación?
¿Y por qué necesitamos información sobre todos los pedidos cada vez que se produce un tic? ¿No sería mejor introducir restricciones en las órdenes de visualización, por ejemplo, cada nuevo minuto, cinco minutos, ..., hora?
 

En algunos VPS, la fuente de la interfaz de EA es mucho más grande que la programada en el código MKL.

Cómo cambiarlo, ¿quién sabe?


 

Pregunta: ¿OnTimer() reinicia los cálculos cuando llega un tick?

En mi función OnTick() tengo cálculos muy grandes y no se producen datos, sólo después de algún tiempo, a veces casi inmediatamente, a veces se necesita un par de minutos. Por lo que sé, esto se debe a que si durante el cálculo ha llegado un tick, todos los cálculos se detienen y comienzan de nuevo.

Pero no necesito hacerlos a menudo, así que me gustaría ponerlos en un temporizador?

 
Roman Sharanov:

Pregunta: ¿OnTimer() reinicia los cálculos cuando llega un tick?

En mi función OnTick() tengo cálculos muy grandes y no se producen datos, sólo después de algún tiempo, a veces casi inmediatamente, a veces se necesita un par de minutos. Por lo que sé, esto se debe a que si durante el cálculo ha llegado un tick, todos los cálculos se detienen y comienzan de nuevo.

Pero no necesito hacerlos a menudo, así que me gustaría ponerlos en un temporizador?

¿Cómo lo sabes? No es así.

Hasta que se completen todos los cálculos que se iniciaron con la llegada del tic, se omiten todos los tics posteriores.

 
Artyom Trishkin:

¿Cómo lo sabes? No es así.

Hasta que se completen todos los cálculos que se iniciaron con la llegada del tic, se saltan todos los tics posteriores.

Hmm, he visto en algún sitio que es al revés, así que estoy equivocado.
Me pregunto, ¿por qué con los mismos cálculos cuando coloco un EA en un gráfico, los resultados a veces son inmediatos y a veces tengo que esperar por ellos durante mucho tiempo?

Ahí es donde entran los tics.

 
Roman Sharanov:

Hm, he visto en alguna parte que es viceversa, significa que estoy equivocado
Me pregunto, ¿por qué con los mismos cálculos, cuando pongo el EA en el gráfico, los resultados a veces vienen de inmediato, y a veces tengo que esperar por ellos durante mucho tiempo?

Y los tics aparecen.

Nadie puede decirlo sin el código.

 
Artyom Trishkin:

Nadie puede decírselo sin el código.

También encontré un grave inconveniente, demasiadas llamadas a CopyClose()

¿Pueden decirme cómo copiar las cotizaciones de un array de pares de divisas en un bucle?

Eso parecería ser un array doble, pero MQL no lo soporta, como %.

...
double all_data[N][];
for(int i = 0; i < N; n++){
        CopyClose(Pairs[i], PERIOD_CURRENT, 1, Count, all_data[i]);
}