Discusión sobre el artículo "Comparando MQL5 y QLUA - ¿Por qué las operaciones comerciales en MQL5 son hasta 28 veces más rápidas?"

 

Artículo publicado Comparando MQL5 y QLUA - ¿Por qué las operaciones comerciales en MQL5 son hasta 28 veces más rápidas?:

Muchos tráders a menudo no reflexionan sobre la velocidad a la que su solicitud llega hasta la bolsa, cuánto tiempo tarda en ejecutarse una vez está allí, y en qué momento el terminal del tráder conoce finalmente el resultado de la operación comercial. Habíamos prometido comparar la velocidad de las operaciones comerciales, porque nadie había hecho antes que nosotros semejantes mediciones con la ayuda de los programas en MQL5 y QLUA.

Muchos tráders a menudo no reflexionan sobre la velocidad a la que su solicitud llega hasta la bolsa, cuánto tiempa tarde en ejecutarse una vez allí, y en qué momento el terminal del tráder conoce el resultado.

Como resultado, no saben lo fácil que es mejorar la calidad de la ejecución de sus operaciones gracias a una reacción más rápida y a una mayor velocidad en la realización de las transacciones.

El 12 de septiembre de 2016 se efectuaron tres mediciones de la velocidad en una cuenta real de la base de datos de "Otkrytie" en MetaTrader 5 build 1415 y Quik 7.2.23 al mismo tiempo. Cada prueba debía medir una característica concreta de la velocidad que fuera importante desde el punto de vista del trading algorítmico:
  1. Simulación de operaciones sincrónicas  — una serie de 10 operaciones comerciales consecutivas Buy sincrónicas con confirmación del éxito de la ejecución de cada transacción en la bolsa. La operación siguiente no se realizará mientras que no se haya recibido la confirmación del servidor comercial de que la operación ha pasado/no ha pasado en la bolsa. La velocidad de ejecución depende de la cadena terminal — servidor comercial — bolsa — servidor comercial — terminal al completo. Cuanto menor sea el tiempo medio de la operación comercial sincrónica, mejor.
  2. Simulación de operaciones asincrónicas — serie de 10 operaciones comerciales Buy asincrónicas sin confirmación sobre el éxito de la ejecución de la transacción. Se trata de un simple test que mide la velocidad de envío de los pedidos a la bolsa. Aquí también será el mejor aquel terminal con el menor tiempo de ejecución de las 10 compras asincrónicas.
  3. Simulación de la actualización de la profundidad de mercado — medición de la velocidad de los pedidos en la Profundidad de mercado. Se trata de un cálculo simple del número de ticks (actualizado) de la Profundidad en una unidad de tiempo. Cuanta mayor sea la frecuencia con la que llegan las cotizaciones de la bolsa al terminal comercial, más rápida será la actualización de la Profundidad. Por consiguiente, cuantos más ticks por segundo lleguen al programa de comercio automático, más rápida será su velocidad de reacción ante los cambios en la estructura de la demanda/oferta en el mercado. Será el mejor aquel terminal en el que la velocidad de actualización de la Profundidad de mercado sea mayor.

Los resultados de las tres pruebas han sido reunidos en un recuadro resumido. Los resultados detallados de cada prueba se muestran debajo de cada sección de este artículo.

Prueba
MetaTrader 5
QUIK
Ventaja de MT5
Duración media de una operación sincrónica
9.59 ms277.80 ms28.96 veces
Duración media de una operación asincrónica0.09 ms0.30 ms 3.33 veces
Velocidad de actualización de la profundidad de mercado
42.7 veces por segundo8.4 veces por segundo5.08 veces

Como podemos ver por la tabla, MetaTrader 5 es superior en las tres pruebas con una ventaja considerable. Cualquiera que lo desee puede realizar pruebas semejantes con las ayuda de los códigos fuente adjuntos. La propia simulación se muestra en el vídeo que hay más abajo.



Autor: MetaQuotes Software Corp.

 

Por favor, haga otra prueba de velocidad MT5 en una cuenta real

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

Probando 'CopyTicks'

fxsaber, 2016.09.13 11:11 AM

si a través de OrderSendAsync envío dos limitadores (BuyLimit1_price < BuyLimit2_price) dentro del spread, ¿la bolsa generará dos ticks consecutivos con mejora bid-price al mismo tiempo (con precisión de 1ms)?


 

Comentarios de los que odian la política sobre este artículo

MetaQuotes Software Corp. / Клуб трейдеров sMart-Lab. Мы делаем деньги на бирже.
MetaQuotes Software Corp. / Клуб трейдеров sMart-Lab. Мы делаем деньги на бирже.
  • smart-lab.ru
Мы рады сообщить об интеграции с LMAX Exchange — многосторонней площадкой (Multilateral Trading Facility, MTF) для торговли валютами, драгоценными металлами и индексами. Шлюз MetaTrader 5 к LMAX Exchange предлагает брокерам, фондам и профессиональным трейдерам доступ к потоковой ликвидности с использованием лимитных ордеров, прозрачное...
 
//--- omite los primeros ticks para la limpieza inicial de la cola y el calentamiento
   tickcounter++;
   if(tickcounter<ExtSkipFirstTicks)
      return;

Es necesario aclarar el efecto de las colas y el calentamiento en el rendimiento.

 

lenguaje MQL5: cuando hablamos de milisegundos y más aún de microsegundos, la velocidad del propio lenguaje de automatización empieza a tomar una parte importante en la latencia.

Si un trader utiliza lenguajes interpretados como QLUA/EasyLanguage, simplemente pierde milisegundos en el flejado y ni siquiera es consciente de ello. Por no hablar de que su programa desde el núcleo de la plataforma puede recibir notificaciones sobre la actividad del mercado con retrasos significativos de cientos de microsegundos o incluso milisegundos.

Por eso dedicamos tantos esfuerzos a optimizar MQL5 y paso a paso lamemos los cuellos de botella, ganando decenas y cientos de microsegundos.


Recientemente, hemos demostrado la velocidad de visualización de datos en tres terminales Quik, MetaTrader 5 y SmartX en MOEX.

Debería ver la apertura del mercado a partir de las 00:50 aproximadamente: el ganador es visible de inmediato


Foro sobre negociación, sistemas automatizados de negociación y prueba de estrategias de negociación

Velocidad de ejecución de órdenes

Renat Fatkhullin, 2016.09.01 20:29

Tenemos un mecanismo de entrega de datos basado en transacciones puras a diferencia de nuestros competidores con instantánea basada. Es por eso que todas las transacciones individuales (los ticks también son transacciones) se entregan al instante y sin retrasos.

Por ejemplo, los gráficos de Quik viven su vida basada en instantáneas aislados del flujo de ticks. Es por eso que los gráficos allí son visualmente lentos en comparación con MetaTrader. La pila en Quick se actualiza hasta 5 veces más lento en comparación con MT5 - lo hemos medido con seguridad. Lo más probable es que las actualizaciones también sean instantáneas, para no sobrecargar el terminal y la infraestructura.

Y honestamente transmitimos todos los datos transaccionalmente sin retrasos ni snapshots.


 

Мы записали на видео все три теста одним роликом, чтобы было видно:

  1. las operaciones comerciales se realizaron en la misma cuenta real
  2. y en el mismo instrumento Si-9.16;
  3. en el mismo ordenador;
  4. las operaciones se ejecutaron al mismo tiempo
  5. en las mismas condiciones de mercado;
  6. las tasas de actualización de la pila se midieron en el mismo instrumento y al mismo tiempo;
  7. la latencia de la red a los servidores de Openreach fue de 2 ms.

Lamentablemente, esto no es cierto. Debería haberse medido al mismo tiempo y haberse mostrado en el vídeo.

Puedes ejecutar MT5 en un mercado tranquilo y QUICK en noticias. Y los indicadores serán completamente diferentes.

 
fxsaber:


Es necesario aclarar el efecto de las colas y el calentamiento en el rendimiento.

Si ve este vídeo, verá que antes del inicio de una sesión de negociación hay varias actualizaciones únicas de la pila. Por lo tanto, el script se salta los primeros N ticks para asegurarse de que hay una verdadera cantidad de órdenes en la pila. Y sólo después empieza a contar los ticks.


 
fxsaber:

Por desgracia, eso no es cierto. Debería haberse medido al mismo tiempo y haberse mostrado en vídeo.

Todas las pruebas se filmaron secuencialmente en una pieza a la vez para mantener las mediciones limpias.
 
Rashid Umarov:
Todas las pruebas se realizaron secuencialmente de una en una para mantener limpias las mediciones.
Entonces, lógicamente, se pueden cuestionar las conclusiones relativas a las gafas.
 
fxsaber:
Entonces, lógicamente, se pueden cuestionar las conclusiones relativas a las gafas.
Se facilitan los códigos, cualquiera puede comprobar por sí mismo si las conclusiones son válidas. Aquí no hay ningún problema.
 
Rashid Umarov:

Si observa este vídeo, verá que antes del inicio de una sesión de negociación hay varias actualizaciones únicas de la pila. Por lo tanto, el script se salta los primeros N ticks para asegurarse de que hay una verdadera cantidad de órdenes en la pila. Y sólo después empieza a contar los ticks.


El vídeo muestra el inicio de la sesión. Y el vídeo del artículo muestra el propio "jugo". Y

input ulong ExtSkipFirstTicks=10;  // número de ticks omitidos al inicio

el número no es suficiente para el inicio de la sesión. Por favor, explique lo que es una "cola" y "calentamiento".