> 100 ms para la ejecución de SymbolInfoTick. Está claro que el código se dispara solo. Pero muestra la razón por la que se ralentiza en los Asesores Expertos habituales.
Esto es algo que hay que tener en cuenta a la hora de evaluar la medición de las acciones puntuales a través de este parámetro.
Una forma más precisa de medir:
voidOnTick()
{
MqlTick Tick;
ulong gstart=GetMicrosecondCount();
int count=10000;
for(int i=0; i<count; i++)
{
SymbolInfoTick(_Symbol, Tick);
}
ulong gend=GetMicrosecondCount()-gstart;
Print(count," iterations, total time ", DoubleToString(gend/1000.0,3)," ms; avr time: ",DoubleToString(gend/1000.0/count,3)," ms");
}
20 gráficos.
Bild 2656.
2020.10.2010:55:12.725SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 10.031 ms; avr time: 0.001 ms
2020.10.2010:55:12.726SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 10.799 ms; avr time: 0.001 ms
2020.10.2010:55:12.726SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 11.080 ms; avr time: 0.001 ms
2020.10.2010:55:12.727SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 11.181 ms; avr time: 0.001 ms
2020.10.2010:55:12.727SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 11.158 ms; avr time: 0.001 ms
2020.10.2010:55:12.727SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 11.202 ms; avr time: 0.001 ms
2020.10.2010:55:12.727SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 11.206 ms; avr time: 0.001 ms
2020.10.2010:55:13.030SymbolInfoTick (GBPCHF,H1) 10000 iterations, total time 0.433 ms; avr time: 0.000 ms
2020.10.2010:55:13.528SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 6.344 ms; avr time: 0.001 ms
2020.10.2010:55:13.530SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 8.253 ms; avr time: 0.001 ms
2020.10.2010:55:13.532SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 9.745 ms; avr time: 0.001 ms
2020.10.2010:55:13.532SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 9.873 ms; avr time: 0.001 ms
2020.10.2010:55:13.532SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 10.392 ms; avr time: 0.001 ms
2020.10.2010:55:13.532SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 10.201 ms; avr time: 0.001 ms
2020.10.2010:55:13.532SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 10.020 ms; avr time: 0.001 ms
2020.10.2010:55:13.532SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 10.388 ms; avr time: 0.001 ms
2020.10.2010:55:14.439SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 11.488 ms; avr time: 0.001 ms
2020.10.2010:55:14.439SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 12.251 ms; avr time: 0.001 ms
2020.10.2010:55:14.439SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 12.257 ms; avr time: 0.001 ms
2020.10.2010:55:14.440SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 12.495 ms; avr time: 0.001 ms
2020.10.2010:55:14.440SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 12.624 ms; avr time: 0.001 ms
2020.10.2010:55:14.440SymbolInfoTick (AUDUSD,M15) 10000 iterations, total time 12.592 ms; avr time: 0.001 ms
A veces la propia medición es lenta, por ejemplo ::GetMicrosecondCount().
Un ejemplo sencillo:
20 gráficos.
GetLastError() sólo está leyendo una celda de memoria en la nat. En realidad, el coste es cero.
Gracias, ya veo. Pero, ¿aún así se puede considerar la introducción de variables predefinidas? La lectura de una variable sería probablemente más rápida que llamar a una función y llenar una estructura.
La razón del frenado de SymbolInfoTick parece ser el manejo paralelo.
Resultado (inAmount = 15).
> 100 ms para la ejecución de SymbolInfoTick. Está claro que el código se dispara solo. Pero muestra la razón por la que se ralentiza en los Asesores Expertos habituales.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
MT5 y Speed en acción
Roman, 2020.10.14 04:54
Las variables predefinidas, para el tick actual, serían mejores.
Resultado (inAmount = 15).
La HFT no puede construirse con esos retrasos.
¿No sería mejor sacar el tiki del vaso?
¿No lo has medido?
Z.u.s. o mejor aún FIX it ))
Es mejor no identificar una nueva garrapata a través de las barras.
Resultado.
¡Los bares se retrasan unos segundos con respecto al estado real! Hola amantes de las barras y los indicadores.
Es muy difícil llamar a eso un autodisparo.
Resultado (inAmount = 15).
¿Cómo se hace esto?
20 gráficos.
Construye 2656.
Ahh, ¿había 1000 consultas allí?
Sólo que no está en el ordenador para comprobarlo.
fxsaber, y realmente ¿por qué habría 1000 consultas para el tick actual?
Anton, pero aún así se deslizó 19 mcs.
Como porcentaje del resto, es el 850%
Roman:
Anton, pero aún así se deslizó 19 mcs.
Como porcentaje del resto, es el 850%.
A veces la propia medición es lenta, por ejemplo ::GetMicrosecondCount().
Un ejemplo sencillo:
20 gráficos.
GetLastError() sólo está leyendo una celda de memoria en la nativa. En realidad, el coste es cero.
Si todavía tienes dudas, puedes hacerlo de esta manera:
Esto es algo que hay que tener en cuenta a la hora de evaluar la medición de las acciones puntuales a través de este parámetro.
Una forma más precisa de medir:
20 gráficos.
Bild 2656.
A veces la propia medición es lenta, por ejemplo ::GetMicrosecondCount().
Un ejemplo sencillo:
20 gráficos.
GetLastError() sólo está leyendo una celda de memoria en la nat. En realidad, el coste es cero.
Gracias, ya veo.
Pero, ¿aún así se puede considerar la introducción de variables predefinidas?
La lectura de una variable sería probablemente más rápida que llamar a una función y llenar una estructura.
Una forma más precisa de medir:
Temperatura media del hospital.