Arrancando el beneficio hasta el último pips

19 septiembre 2019, 15:44
fxsaber
1
1 555

Introducción

Este artículo es sobre uno de los posibles enfoques en el trading algorítmico. No tiene relación directa con las plataformas MetaQuotes y está orientado a grandes masas de lectores. Si no entiende algún término, acuda a la búsqueda. Aquí, se soluciona la tarea de obtener un Sistema Comercial lucrativo (sistema comercial o robot).

¿Dónde cavamos?

Cada trader plantea esta tarea. Eso fue hecho millones de veces. Se puede ir por el camino trillado y pasar inmediatamente a otro artículo. No obstante, sería lógico buscar el tesoro en el lugar, donde si se buscaba, pero no por la multitud.

Tierra

La mayoría de las discusiones sobre la creación de Sistemas Comerciales está asociada al uso de las barras históricas de precio y varios indicadores aplicados a ellas. Es un tema tan discutido que no vamos a tocarlo. Las barras representan una entidad completamente artificial, por tanto, usaremos algo más próximo a la protoinformación— los ticks. Este enfoque nos ofrece una cierta superioridad informativa sobre la multitud.

Pala

La tarea de obtener el beneficio es bastante difícil, por eso, existe una opinión de que puede ser resuelta a través de unos métodos intelectuales complejos: aprendizaje automático, modelos matemáticos econométricos, etc. Tienen una desventaja significativa: tardan tardan mucho tiempo en ser creados y comprobados (debido a la complejidad computacional). Por eso, vamos por el camino opuesto: usando unas ideas muy simples y rápidas. Eso permitirá buscar las regularidades de mercado no en un solo lugar, sino más extensivamente.

Pues sí, este método parece algo estúpido. Pero hay un volumen de información tan enorme, que no es razonable buscar el tesoro en un lugar pequeño y con un pincel de arqueólogo. Por eso, necesitamos una buena herramienta para el estudio. Tiene que ser capaz de trabajar con miles de millones de ticks, ser rápida, visualizar lo encontrado convenientemente. Además, es deseable que la instrucción sea corta y clara.

Excavadora para excavaciones arqueológicas

Si dispone de algún paquete matemático, tiene sus propias elaboraciones que satisfacen a estos requerimientos, es perfecto. Si no es así, usaremos el Simulador de Estrategias de la plataforma  MetaTrader 5.

Esta herramienta tiene incorporada una enorme cantidad de los ticks de diferentes brokers, además, sabe trabajar con ticks de los terceros. Almacena los resultados de los cálculos en su base de datos y visualiza diferentes parámetros de una manera pasable. Además, tiene su propio optimizador multiflujo a base de una simple iteración y genética siguiendo criterios de usuario.

Algoritmo de trading

Necesitamos una idea simple y rápida en forma de un algoritmo de trading. Puede ser cualquier cosa. Lo importante que sea rápido.  Para eso, es deseable evitar ciclos dentro del algoritmo. Una vez recibido un tick nuevo, hacemos algo muy rápido y salimos.

Una de las versiones de este algoritmo ha sido puesta por base del presente artículo. Puede parecer que es la «salsa» del artículo que debe ser aclarada obligatoriamente para su utilidad. Pero no es así. El artículo muestra algo diferente. Así que el algoritmo usado está ocultado.

MQL5

El algoritmo comercial se crea en forma de un Asesor Experto (EA) en el lenguaje MQL5. Hemos renunciado las barras e indicadores. Por eso, nos quedan sólo los ticks y el trabajo con las órdenes (y su historial). Es conveniente escribir estos EAs en MQL4,  y luego, convertirlos en MQL5 con una cadena a través de la biblioteca comercial MT4Orders.

#include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006

Eso hace que el código sea del tipo multiplataforma(trabaja en MetaTrader 4/5), y abre puertas para el uso de algunas bibliotecas útiles. Es necesario escribir un algoritmo comercial rápido, con un mínimo de verificaciones en el Simulador.

Fuente

¿De dónde podemos sacar la información de precios para el estudio? Hay muchas fuentes de los ticks. Sería lógico, primero, decidir entre ellos.

Tal vez, sería más probable encontrar una pepita de oro en una roca donde la concentración del contenido del oro sea más alta. Por tanto, vamos a usar una fuente de ticks que tiene más beneficio potencial. El método para determinar este criterio comparativo fue descrito en este comentario. A base de este método, fue elegido este archivo de los datos de ticks de muchos gigabytes. Miles de millones de ticks.

Ticks personalizados

Usar los ticks en el Simulador de MetaTrader 5 es posible a través de los símbolos personalizados. Todo eso es bastante pesado para una rápida comprensión, por eso, usaremos el script ThirdPartyTicks ya hecho, que crea estos símbolos a base de los datos desde el archivo de cotizaciones seleccionado.

Ventana de ejecución de ThirdPartyTicks para descargar el archivo de cotizaciones entero.


Aditivo de combustible

Es necesario saber trabajar con miles de millones de ticks en un tiempo razonable. En términos generales, tenemos que generar de alguna manera billones de ticks en la entrada del algoritmo comercial a la hora de buscar las regularidades. Eso demora mucho, por tanto, necesitamos algún mecanismo de aceleración.

Es que no todos los ticks son necesarios. Puesto que conocemos nuestro algoritmo comercial, entonces, comprendemos que ticks no causan cambios de negociación. Es decir, podemos determinar los ticks innecesarios y quitarlos del historial. Este tipo de filtración es bastante eficaz:

Total Ticks (EURAUD.rann) = 61354152 (2134296 ticks/sec.), Reserve = 80023750
Recording...
After Filter (MinPips = 5) Ticks = 7820486 (12.75%)

Al gravar el log, se puede ver que hemos conseguido reducir bastante el número de ticks.

El Simulador de MetaTrader 5 es muy meticuloso (puede ser útil). Por eso, ejecuta muchos cálculos que son sobrantes en el estudio propuesto (algunas veces son erróneos). Para evitar eso, es necesario entender sus minucias, lo que desde luego no vamos a hacer aquí. Este tema ya fue discutido en uno de los tópicos del foro.

Para no ser engañados, escribiremos los que es necesario para el algoritmo comercial en MQL5:

  • Apertura/cierre de posiciones comerciales sólo a través de órdenes limitadas.
  • Lógica de compensación. Por tanto, es necesario tener abierta una cuenta de compensación en MetaTrader 5
  • Trading con 1 lote — Beneficio en pips.
  • Inicialización en el servidor donde no hay comisiones para los símbolos personalizados en el Simulador.
  • Hacer que el símbolo personalizado sea «bursátil».

El resultado de una ejecución debe ser algo parecido:


La imagen de la columna seleccionada muestra que se realiza la inversión de la posición a través de las órdenes limitadas. Además, se ejecutan exactamente por el precio indicado. La ejecución exacta por los precios indicados es muy importante.

Finta

El comportamiento del mercado depende de la hora del día. Por eso, aplicamos la biblioteca BestInterval, escribiendo apenas dos líneas en el código fuente del EA:

#define BESTINTERVAL_ONTESTER // El criterio de la optimización es el beneficio del mejor intervalo.
#include <fxsaber\BestInterval\BestInterval.mqh> // Cálculo del mejor intervalo del trading

Eso ofrece parámetros de entrada adicionales en el EA.

Parámetros de entrada de BestInterval

Vamos a optimizar según el criterio de BestInterval igual a mayor beneficio que el EA muestra al negociar a una determinada hora del día.

Excavador

Pues bien, el algoritmo comercial está listo. Los ticks personalizados filtrados también están preparados. Nos queda sólo azuzar uno contra otro a través del Simulador de  MetaTrader 5.  Aquí, la solución MultiTester viene a ayudarnos. Va a usar automáticamente cada símbolo personalizado y realizar la optimización del EA.

Parámetros de entrada para iniciar la optimización para todos los símbolos personalizados de la Observación de Mercado.


Intervalo de optimización

No tiene sentido ejecutar la optimización en todo el historial, porque no habrá ninguna manera de entender si ha sido encontrada una regularidad o se trata de un simple ajuste. Como todo se hace a base de una trilladora numérica, vamos a contar con una cantidad grande de transacciones.

Cuanto más grande sea el número de transacciones, será más fácil hablar de la importancia de algunos indicadores estadísticos. Cuanto más pequeño sea el tiempo medio de vida de una transacción, los riesgos son menores. En total, el hecho de que haya muchas transacciones es bueno. Aunque no está justificado como es debido.

Como una alta frecuencia de transacciones es deseable, se puede seleccionar un intervalo no muy grande. De cualquier forma, se acumulará una buena cantidad de transacciones.

Intervalo para optimización.

Eso es un poco menos de cuatro últimos meses.

¡Manos a la obra!


Artefactos

Para 81 símbolos (todos los datos de la fuente del archivo), todos los cálculos fueron hechos en 10 horas, algunas de las cuales se gastaron para el sueño del autor. Por tanto, conviene ejecutarlo por las noches. Puesto que  MetaTrader 5 es multinúcleo, esas 10 horas son para el calentamiento adicional del local.

Entramos en la base de datos del Simulador de MetaTrader 5 , y vemos las caches de optimización.

Caches de optimización


Al abrir cualquier entrada de esta base de datos, obtenemos los resultados correspondientes de la optimización para el símbolo seleccionado.

Todas las variantes (81) fueron repasadas manualmente. Este proceso puede ser automatizado, pero esta implementación no existe por ahora, por tanto, fue gastada una hora. Mostraré sólo un símbolo, como ejemplo. Para los demás, fue hecho lo mismo.

resultado de la optimización para un símbolo.


Vemos el resultado de la optimización para un símbolo clasificado por el criterio BestInterval. Los símbolos personalizados son buenos por la siguiente razón: no hay limitación para el balance negativo. Es decir, el tamaño del balance no afecta el trading. Usted puede no preocuparse de eso.

Es deseable que exista un gran número de transacciones, por eso, seleccionamos una entrada en la columna roja e iniciamos el testeo. Su gráfico del trading será el siguiente:

Gráfico del trading de todo el día.


Es la negociación de veinticuatro horas. Mostramos la siguiente entrada al final del log de la ejecución única.

BestInterval Action(true - single pass & MT4-style & Virtual is required) = false

Profit = -2392.00 = -2392.00 + 0.00 (0.00%) - Amount of Delete Intervals = 0 (2019.04.01 - 2019.07.20)
00:00:00 - 23:59:59 : Profit = -2392.00 (100.00%), Total = 2612 (70.64%), PF = 0.94, Mean = -0.92, DD = 3840.00, RF = -0.62
SUMMARY: 00:00:00 - 23:59:59 : Profit = -2392.00 (100.00%), Total = 2612 (70.64%), PF = 0.94, Mean = -0.92, DD = 3840.00, RF = -0.62

Profit = 4035.00 = -2392.00 + 6427.00 (-268.69%) - Amount of Delete Intervals = 1 (2019.04.01 - 2019.07.20), 20:00 - 08:00, CountHours = 11
00:00:00 - 07:58:54 : Profit = 1074.00 (26.62%), Total = 349 (76.22%), PF = 1.21, Mean = 3.08, DD = 709.00, RF = 1.51
19:41:38 - 23:59:59 : Profit = 2961.00 (73.38%), Total = 348 (76.44%), PF = 1.94, Mean = 8.51, DD = 358.00, RF = 8.27
SUMMARY: 00:00:00 - 23:59:59 : Profit = 4035.00 (100.00%), Total = 697 (76.33%), PF = 1.49, Mean = 5.79, DD = 484.00, RF = 8.34
BestInterval is saved in "TesterEA"-file in common(MT5)/base(MT4) folder.

final balance - InitBalance (10000.00) + Profit (-2392.00) without BestInterval.
OnTester - Profit (4035.00) with BestInterval.
final balance 7608.00 USD
OnTester result 4035

Ella muestra que si fuera un beneficio de 4035 pips, sería posible de negociar siguiendo la estrategia comercial de las 8 de la tarde hasta las 8 de la mañana. Para ver esta negociación, vamos a los parámetros de entrada e indicamos que hay que activar BestInterval

Activación de BestInterval


Es obligatorio sacar el Simulador de MetaTrader 5 del modo de Optimización. Lamentablemente, en el Simulador de  MetaTrader 5, eso es inconveniente.

Desactivación de la OPtimización para activar BestInterval.


Iniciamos y observamos el resultado de la aplicación de BestInterval.

Resultado de la aplicación de BestInterval.


En los logs de la ejecución única, nos aseguramos de que todo ha sido procesado correctamente.

BestInterval Action(true - single pass & MT4-style & Virtual is required) = true
Calculation time activated intervals is 2019.07.23 16:27:25 - TesterEA (common folder) 00:13:14 ago.

Amount of Delete Intervals = 1 (2019.04.01 - 2019.07.20), 20:00 - 08:00, CountHours = 11
00:00:00 - 07:58:54 : Profit = 1074.00 (26.62%), Total = 349 (76.22%), PF = 1.21, Mean = 3.08, DD = 709.00, RF = 1.51
19:41:38 - 23:59:59 : Profit = 2961.00 (73.38%), Total = 348 (76.44%), PF = 1.94, Mean = 8.51, DD = 358.00, RF = 8.27
SUMMARY: 00:00:00 - 23:59:59 : Profit = 4035.00 (100.00%), Total = 697 (76.33%), PF = 1.49, Mean = 5.79

final balance - InitBalance (10000.00) + Profit (4035.00) with BestInterval.
OnTester - Virtual InitBalance (10000.00) + Profit (-2403.00) without BestInterval. Profit is calculated with TickValue=1 and w/o Commission+Swap.
final balance 14035.00 USD
OnTester result 7597

Parece casi bonito. Hay muchas transacciones y el gráfico es bastante tranquilo. No quiero decepcionarme, pero es obligatorio iniciar en el historial entero (y quebrarse).

Verificación de los resultados en el historial entero.

Cada vez vamos a obtener un gráfico feo, diciendo que tenemos un ajuste matemático de los parámetros para un buen resultado en el intervalo optimizado. Pero no funciona en otras secciones. Es decir, si iniciamos eso durante la negociación, habrá pérdidas.

Forward

El Simulador de MetaTrader  permite ejecutar la simulación forward. Yo opino que la simulación de este tipo es un autoengaño. Por esa razón, es necesario usar dos o tres resultados buenos e iniciar a base del historial entero. Si ninguno sale bien, a la basura. La simulación forward repasa muchas más variantes, o sea, es uno de los tipos del ajuste.

Oro

Pues bien, ¿tendremos siempre un gráfico feo, o hay esperanza? Pues sí, con el aumento en el historial entero, nuestra variante tiene el siguiente resultado.

Uno de los resultados en el historial entero.

El intervalo optimizado está marcado en rojo. Se observa muy bien que en el período muchas veces mayor que el intervalo optimizado, hay una buena estabilidad.


Grabado de joyas

Ahora, está claro con qué símbolo hay que seguir trabajando, es EURCHF. Informe de ejecución mostrado arriba:

Informe del resultado de la ejecución en el historial entero.

El beneficio esperado se destaca en pips. ¡Es un parámetro importante! Es que la comisión en EURCHF es de ~ 4.40 pips. Eso significa que, en este caso, habrá que regalar dos o tres ganancias para la plataforma de negociación. Es demasiado.

Por eso, quitamos BestInterval introduciendo la posibilidad de regular el tiempo de la negociación en los parámetros de entrada. Empezamos a optimizar a partir del momento de la máxima reducción (drawdown), está marcada en verde en el gráfico de arriba. Si hay muchos parámetros, hacemos la genética varias veces.

Para que no haya fuertes distorsiones a la hora de buscar las regularidades durante la optimización, quitamos el aumento no sistemático.

Aumento no sistemático.

Para eso, escribimos lo siguiente en el código fuente

const bool TradeTime = (TimeCurrent() < D'2018.02.10') || (TimeCurrent() >= D'2018.02.12');

Como resultado, hemos conseguido aumentar el beneficio esperado doblemente para el símbolo no filtrado.

Martin/Cuadrícula

Claro que intenté usar diferentes trucos en forma de las cuadrículas de las órdenes, etc. Primero, me alegré que el beneficio esperado crecía a docenas de por cientos. Pero no podía explicar el motivo. Al final, resultó que el Simulador de  MetaTrader 5 lo calculaba de forma incorrecta en las cuentas de compensación. Para ser más exacto, él coloca en este concepto algo diferente de lo esperado. Por eso, escribí lo que era necesario

// Cálculo del beneficio esperado. En la cobertura coincidirá con el clásico.
double OnTester()
{
  double Res = 0;
  
  if (HistorySelect(0, INT_MAX))
    for (int i = HistoryDealsTotal() - 1; i >= 0; i--)
      Res += HistoryDealGetDouble(HistoryDealGetTicket(i), DEAL_VOLUME);
  
  Res /= 2;
  
  if (Res)
    Res = TesterStatistics(STAT_PROFIT) / Res;
  
  return(Res);
}

El resultado confirmó totalmente la teoría de que la cuadrícula no podía mejorar una estrategia comercial bien optimizada. Es una conclusión corta pero muy amplia.

Monetización

Es necesario decidir dónde negociar lo encontrado. Revisamos las condiciones comerciales de los brokers (incluyendo el historial de precios), haciendo hincapié en la implementación de órdenes limitadas. Algunos brokers ejecutan las órdenes limitadas en los mercados, permitiendo un deslizamiento negativo. Mientras que algunos prohíben las ejecuciones parciales de las órdenes limitadas. Nos mantenemos apartados de ellos, es que estamos luchando por cada pip (véase el título del artículo). Una actitud negligente en relación a las condiciones comerciales es inaceptable.

Obsérvese que no tiene que buscar sólo entre los brokers de MetaTrader 4/5. Hay que buscar por todas partes. La plataforma comercial es secundaria. Tal vez, no sea de todo correcto hablar así en el recurso de  MetaTrader 4/5, pero es verdad. Vamos a ser objetivos, la estrategia comercial es primaria.

En cuanto a muchas transacciones, pues, la negociación es así.

Ejemplo de un trecho del trading.


Fue posible encontrar un mercado adecuado. Las órdenes limitadas iniciales van a llegar al proveedor de la liquidez lo más rápido posible, lo que aumentará la probabilidad de la ejecución. Además, los deslizamientos positivos pueden ser un bono. Para nosotros, cada pip en el beneficio esperado es importante. Eso permitirá recuperar una parte de gastos en las comisiones.

Trading real

Este honor ha correspondido para la plataforma MetaTrader 4. Así que el concepto de la multiplataforma ha resultado ser útil otra vez.

Para conseguir la máxima coincidencia de lo real con los resultados del Simulador, fue necesario organizar el siguiente esquema de trabajo.

  • Al iniciar el EA, se selecciona el historial de tick hasta el estado actual a través de la biblioteca HistoryTicks.
  • En este historial de tick, el EA se ejecuta automáticamente en el entorno virtual a través de la integración de la biblioteca Virtual
  • En el navegador, vemos el historial completo hasta el momento actual con los ajustes del EA. Eso permite minimizar inmediatamente la probabilidad del error de la definición de los parámetros de entrada. Si vemos una pérdida, entonces, ha sido cometido un error.
  • En cada tick, el EA continua negociando en el entorno virtual. Si desactivamos el EA, después de su inicialización, va a negociar como si no fuera desactivado.
  • El entorno real, que no es ideal constantemente, se sincroniza con el entorno virtual, donde la ejecución es ideal.

Todos estos trucos fueron necesarios por causa de la lucha por el tamaño del beneficio esperado. Pero este esquema podría aplicarse a casi cualquier estrategia comercial. Claro que se puede no preocuparse mucho. No obstante, tuve la oportunidad de observar en qué a veces eso se transformaba en una negociación real. Por eso, el esquema no fue diseñado desde cero.

Diversificación

Sería muy presuntuoso seleccionar sólo una variante de los parámetros de entrada. No se sabe cuál de las variantes de la optimización es buena en el futuro y cuál no lo es.

Por tanto, fueron escogidas de prisa ocho variantes, el balance de la cuenta fue dividido entre ellas de manera igual. Fueron iniciados simultáneamente (ocho gráficos, cada uno con un EA con su propio MagicNumber). Externamente, eso parece a una cuadrícula. Pero, desde luego, no tiene nada que ver con los sistemas comerciales de cuadrícula. Son ocho sistemas independientes.

Repartiendo el pastel

Supongamos que ha sido iniciado. ¿Entonces, qué hacemos? Hay varias opciones. Del control remoto (gestión de confianza) y PAMMs hasta los servicios de copiado de las Señales.

Como estamos hablando de la extracción del beneficio, tiene sentido apostar por las Señales sólo para los fines de PR.  Los suscriptores no podrán ganar porque van a recibir los deslizamientos negativos durante el copiado. Lo que implicaría una reducción del beneficio esperado hasta los valores negativos. O sea, la pérdida de los suscriptores es muy probable en caso de este tipo de negociación.

La iluminación del método del trading tiene oportunidad para reproyectar el sistema comercial o los principios básicos. Esa es otra variante para beneficiarse del sistema del código abierto.

Finalmente, se puede simplemente observar desde fuera cómo un sistema comercial supuestamente bueno vuelve a perder de nuevo. Es inevitable.

Memorias

En el camino del investigador en el campo del trading algorítmico, aparecen varias historias, baches, etc. Me acuerdo de muchas cosas. Hace poco, se hablaba de paso sobre EURDKK, pero el siguiente caso vendrá muy bien en los términos del presente artículo.

Resultado del sistema comercial optimizado en el intervalo rojo.

Esta imagen representa el resultado del sistema comercial optimizado en el intervalo rojo. Definitivamente, no consigo reproducir como era en aquel entonces. Pero recuerdo que la imagen a la izquierda del intervalo era mucho mejor: una línea recta. Era casi un Grial, que fue colocado en la cuenta real y ganaba igualmente como en el Simulador de Estrategias. Cuando empezó una pérdida sistemática después del año nuevo, bastó la inteligencia o experiencia para desactivar la negociación. La pérdida fue a cosa de un 10% de lo ganado anteriormente. No estaba claro qué es lo que falló.

En esta historia es importante que incluso la situación del Grial causa pérdidas. Pero no es la principal razón por la que me he acordado de esta historia.

!Lo importante era el símbolo NOKSEK! ¿Muchos lectores examinaban este símbolo o por lo menos lo vieron? ¿Por qué será?


Conclusiones

En este artículo hay una especie de lucha filosófica: la trilladora numérica contra el enfoque intelectual. Usted mismo decide que es lo que elige.

Algunos truques y razonamientos, tal vez, puedan ser útiles.

El artículo mostró la probabilidad de la razón de una interesante afirmación: si Usted dispone de un sistema comercial ganador, es muy probable que nunca se entere de eso. Probablemente, tiraba los sistemas buenos a la basura más de una vez. Aquí, se muestra que la comprobación de un sistema comercial no consiste en ejecutarlo en uno/dos símbolos.

También se observa la importancia de limitar la negociación según la hora del día. Y no es deseable que sea algo como el método de Monte Carlo. Es que eso puede matar la conclusión sobre la rentabilidad del sistema comercial.

Los sistemas universales son poco probables y no son necesarios para sacar beneficios. La lucha por cada pip tiene lugar para existir.

Está claro, el Simulador MetaTrader 5 también. ¡En algunas partes, es maravilloso! A veces, da un disgusto, pero sin él sería imposible realizar este estudio y explicarlo más o menos de forma comprensible. ¡Agradezco mucho a los desarrolladores! Estamos a la espera de sus mejoras.

Lo que no fue incluido

Me he cansado de escribir, por eso, no todo ha sido incluido:

  • Otros símbolos.
  • Habilidad de MetaTrader 5 para calcular los deslizamientos.
  • Mostrar claramente cómo se recuperan los gastos de la comisión debido a los deslizamientos positivos de las órdenes limitadas.
  • Mostrar que el Take Profit en MetaTrader 5 en esta forma no es adecuado para el uso.
  • ¿Cómo los swaps afectan el resultado?
  • Ambos mese de mayo (2018 y 2019), el sistema comercial en EURCHF causa casi las mismas pérdidas. Es decir, la regularidad se desactiva en el calendario, y luego vuelve a activarse.
  • Cómo se puede crear los criterios para estimar la validez del sistema comercial a través del optomizador automático.
  • Crear los símbolos mixtos.
  • La importancia de la iteración completa antes de aplicar la genética.
  • Si invertimos el símbolo, eso no debe afectar de ninguna manera las regularidades, y por tanto, el sistema comercial.
  • La importancia de interpretar lo que el Simulador muestra.
  • Spread o extremos locales.

Traducción del ruso hecha por MetaQuotes Software Corp.
Artículo original: https://www.mql5.com/ru/articles/7113

La batalla por la velocidad: QLUA vs MQL5 - ¿Por qué MQL5 es de 50 a 600 veces más rápido? La batalla por la velocidad: QLUA vs MQL5 - ¿Por qué MQL5 es de 50 a 600 veces más rápido?

Para comparar los lenguajes MQL5 y QLUA, hemos diseñado varias pruebas que miden la velocidad de ejecución de las operaciones básicas. En dichos tests, hemos utilizado una computadora con Windows 7 Professional 64 bit, MetaTrader 5 build 1340 y QUIK de versión 7.2.0.45.

Estudio de las figuras técnicas de Merrill Estudio de las figuras técnicas de Merrill

En el presente artículo, vamos a analizar el modelo de las figuras técnicas de Merrill, e intentaremos averiguar hasta qué punto estos patrones técnicos son útiles hoy en día. Para este propósito, crearemos una herramienta para testearlos y aplicaremos este modelo a diferentes tipos de datos, a saber: precio de cierre, sus máximos y mínimos, indicadores del tipo oscilatorio.

Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XIV): El objeto "Símbolo" Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XIV): El objeto "Símbolo"

En este artículo vamos a crear un objeto de símbolo que será el objeto básico para crear la colección de símbolos. Con su ayuda, podremos obtener los datos de los símbolos necesarios para su posterior análisis y comparación.

Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XV): Colección de objetos de símbolo. Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XV): Colección de objetos de símbolo.

En el artículo analizaremos la creación de una colección de símbolos basada en el objeto de símbolo abstracto básico creado en el artículo anterior. Los herederos del símbolo abstracto concretarán la información sobre el símbolo. En ellos se organizará la determinación de la accesibilidad en el programa de las propiedades del objeto de símbolo básico, y también se diferenciarán los objetos de símbolo según su pertenencia a un grupo.