MT4-Tester VS MT5-Tester - página 6

 
Alain Verleyen:

Pero su versión original con la build 1596 es mucho más lenta por lo que su comparación original con MT4 debe ser actualizada.

Es posible que esté utilizando una versión antigua de la biblioteca. Siempre puede encontrar la última versión aquí.


Convertido su código a MT4 a través de MT5Bridge. MT4build1072

EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:07.645 (total time 0:00:08.362)


Código original

EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:03.744 (total time 0:00:04.493)


Los resultados tras la conversión son idénticos. La velocidad se ha reducido a la mitad.

 
Yuriy Zaytsev:

tiene más sentido escribir un algoritmo óptimo.

¿Cómo?
 
-Aleks-:

¿Cómo?
Obtenga los datos necesarios una vez por ciclo. Realice el ciclo sólo cuando sea necesario, no en cada tic.
 
-Aleks-:

¿Cómo hacerlo?
Consigue la historia al principio, una vez y recuérdala.
A continuación, controle sólo los pedidos que entran en el historial.
 
Artyom Trishkin:
Una vez por ciclo obtener los datos necesarios. Realice el ciclo sólo cuando sea necesario, no en cada tic.

Mi EA sólo funciona con los precios de apertura. Cuanto más grande es la historia, más lento funciona... veces más lento.

 
Yuriy Zaytsev:
Consigue la historia cuando empieces, una vez y recuérdala.
A continuación, controle sólo los pedidos que entran en el historial.

El probador no tiene historial en el arranque...
 
-Aleks-:

Cuando se inicia, el probador no tiene historial.

Si hablamos sólo del probador, por supuesto que no hay ninguno.

En cualquier caso, no hay que recorrer todo el historial en cada tic o incluso en cada barra.

Si la prueba se realiza sobre ticks, basta con seleccionar una sola orden introducida en el historial.

-Aleks-:

Mi Asesor Experto trabaja sólo con precios de apertura. Cuanto mayor sea el historial, más lento será su funcionamiento.


Si la prueba es en barras, es posible que varias órdenes hayan entrado en el historial, lo que significa que sólo hay que rastrear estas órdenes.

 
-Aleks-:

Mi EA sólo funciona con los precios de apertura. Cuanto más grande es la historia, más lento funciona... veces más lento.

En la lista del historial, cuantas más posiciones cerradas haya, más largo será el ciclo. Limitar el ciclo a una profundidad suficiente de la historia.
 
Artyom Trishkin:
Cuantas más posiciones cerradas haya en la lista del historial, más largo será el ciclo. Limitar el ciclo a una profundidad suficiente de la historia.


Tengo la sospecha de que el probador comienza a ralentizarse no por las órdenes en sí, sino por su modificación - este proceso ocurre en cada barra.


Yuriy Zaytsev:

Si hablamos sólo del probador, por supuesto que no existe.

En cualquier caso, no deberías recorrer todo el historial en cada tic, ni siquiera en cada barra.

Si la prueba se realiza sobre ticks - entonces es suficiente con seleccionar sólo una orden introducida en el historial.


Si la prueba es en barras, es posible que se hayan introducido varias órdenes en el historial, lo que significa que sólo deben rastrearse estas órdenes.


Rara vez repaso la historia -la ralentización se produce por la acumulación de la historia, como tal- a mis sentidos.

Si se pudiera obtener información sobre el número de pedido por su fecha (el primer número de esa fecha), entonces se podría evitar el gran rebasamiento - recorrer los pedidos por el número que cae dentro del rango.

 
-Aleks-:


Tengo la sospecha de que el probador comienza a ralentizarse no por las órdenes en sí mismas, sino por su modificación, proceso que tiene lugar en cada barra.



Rara vez repaso la historia -la ralentización se debe a la acumulación de la historia, como tal- a mis sentidos.

Si fuera posible obtener información sobre el número de pedido por su fecha (el primer número de esta fecha), se podría evitar el gran rebasamiento: buscar los pedidos por el número que cae dentro del rango.

bool  HistorySelect(datetime  from_date, // с даты 
                    datetime  to_date);  // по дату


Razón de la queja: