MT5 y la velocidad en acción - página 28

 
fxsaber:
Añadir una orden/operación al historial de operaciones hace que la caché de HistorySelect se reconstruya completamente, no parcialmente. De ahí los retrasos en la activación de las órdenes.

b2595 - corregido, ¡Genial!

Comprobado en la historia equivocada, no lo he arreglado todavía.

 

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

MT5 y Speed en acción

fxsaber, 2020.09.08 19:46

2020.09.08 20:23:32.103 Alert: Time[Test6.mq5 411: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.08 20:23:32.239 Alert: Time[Test6.mq5 411: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.08 20:31:59.863 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 9 ms.
2020.09.08 20:32:00.845 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.08 20:32:01.856 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 4 ms.
2020.09.08 20:32:02.846 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 7 ms.

Parece que b2596 se ha vuelto más rápido.

2020.09.11 05:06:17.854 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.11 05:06:18.853 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.11 05:06:19.875 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.11 05:06:20.871 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
 
b2605 - no más alertas. Un gran trabajo realizado, ¡gracias!
MT5 и скорость в боевом исполнении
MT5 и скорость в боевом исполнении
  • 2020.09.07
  • www.mql5.com
MT5 - шустрая платформа. Но есть узкие горлышки, которые сводят на нет все старания быстрой торговли...
 

¿Pueden decirme qué hacer para evitar este tipo de cosas al comerciar?

2020.09.15 22:17:04.633 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 13 ms.
2020.09.15 22:17:04.638 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 18 ms.
2020.09.15 22:17:04.640 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 20 ms.
 
Resultado de la ejecución de este script en la terminal en vivo.
2020.09.15 22:26:41.788 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 484: OrderSelect(0)] = 1 ms.
2020.09.15 22:26:48.322 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 489: PositionsTotal()] = 2 ms.
2020.09.15 22:27:07.661 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 490: PositionSelect(Symb)] = 1 ms.
2020.09.15 22:27:47.228 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 483: OrdersTotal()] = 2 ms.
2020.09.15 22:27:53.039 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 483: OrdersTotal()] = 9 ms.
2020.09.15 22:28:13.858 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 490: PositionSelect(Symb)] = 1 ms.
2020.09.15 22:28:21.058 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 484: OrderSelect(0)] = 8 ms.
2020.09.15 22:28:47.813 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 489: PositionsTotal()] = 4 ms.
2020.09.15 22:28:51.482 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 505: AccountInfoInteger(ACCOUNT_TRADE_EXPERT)] = 4 ms.
2020.09.15 22:29:09.053 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 490: PositionSelect(Symb)] = 1 ms.
2020.09.15 22:29:09.353 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 506: AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)] = 1 ms.
2020.09.15 22:29:28.814 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 457: HistorySelect(Tick.time,INT_MAX)] = 2 ms.

La última línea es normal.


¿Pueden los desfases verse afectados por los EA que se ejecutan en paralelo? No hay indicadores.


SZY Perfilando en un terminal vacío.

SymbolInfoTick es una función cara.

 
fxsaber:

¿Pueden los desfases verse afectados por los EA que se ejecutan en paralelo? No hay indicadores.

He lanzado un terminal vacío en paralelo y lo he probado. No he visto lo mismo.

Configuración.
2020.09.15 20:35:42.481 Terminal        Windows 10 build 19042, Intel Core i7-2700 K  @ 3.50 GHz, 6 / 15 Gb memory, 20 / 29 Gb disk, IE 11, Admin, GMT+3

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

MT5 y Speed en acción

fxsaber, 2020.09.01 21:59

Instalado Win10, LatencyMon muestra que todo está bien.

 
En general, debido al hecho de que casi todas las funciones regulares pueden provocar un frenado, el asesor de batalla realiza cada OnTick durante varias decenas de milisegundos. Esta cantidad es consumida por la suma de las llamadas a Order*+SymbolInfoTick+Position*, etc. No hay cálculos matemáticos. Necesitas instantáneas gratuitas. Sin ellos, HDI en MT5 no funciona.
 
fxsaber:
De todos modos, debido al hecho de que casi todas las funciones regulares pueden causar una ralentización, el Asesor Experto de batalla realiza cada OnTick durante varias decenas de milisegundos. La suma de las llamadas Order*+SymbolInfoTick+Position*, etc. se come esa cantidad. No hay cálculos matemáticos. Necesitas instantáneas gratuitas. Sin ellos, HDI en MT5 no funciona.

Algo falla en el planteamiento... Aparentemente, las funciones OnTrade son necesarias en lugar de escanear el estado desde cero en cada tick.

 
Andrey Khatimlianskii:

Algo falla en el planteamiento... Aparentemente, se necesitan funciones OnTrade, en lugar de escanear el estado desde cero en cada tick.

El paradigma OOP supone que cada sub-TC explora el entorno comercial. Sin embargo, si realmente quieres, puedes romper un poco la independencia de los objetos OOP.

Por ejemplo, hacer una instantánea completa al principio de OnTick. Y debe repetirse sólo después de la llamada de las funciones sincrónicas - OrderSend y CopyTicks.

En cuanto a OnTrade*, las interrupciones de la conexión fastidian el esquema cuando las instantáneas se hacen sólo en las funciones de OnTrade. De lo contrario, por supuesto, habría un gran ahorro.

 
fxsaber:

El paradigma OOP supone que cada sub-OS explora el entorno comercial. Sin embargo, si uno realmente quiere, puede romper un poco la independencia de los objetos OOP.

Por ejemplo, hacer una instantánea completa al principio de OnTick. Y se repetirá sólo después de la llamada de las funciones sincrónicas - OrderSend y CopyTicks.

Por supuesto, el objeto de la instantánea debe ser uno.


fxsaber:

En cuanto a OnTrade*, las rupturas de enlaces fastidian el esquema cuando las instantáneas se hacen sólo en las funciones de OnTrade. De lo contrario, por supuesto, habría un gran ahorro.

¿Detectar una interrupción de la conexión y forzar la actualización de la instantánea en el siguiente tick, y luego volver al modo económico?