
Desarrollamos un asesor experto multidivisa (Parte 7): Selección de grupos considerando el periodo forward
Introducción
En artículos anteriores siempre hemos optimizado instancias de estrategias comerciales individuales sobre el mismo periodo de tiempo: de 2018 a 2022. La selección de este periodo para la optimización se debe a que, por un lado, es un periodo bastante largo -durante cinco años pueden haber ocurrido distintos acontecimientos que afecten a la dinámica de precios de los instrumentos comerciales- y, por otro, no es muy largo, de modo que el tiempo de una pasada sigue siendo bastante pequeño -de varias decenas de segundos-. Posicionar el periodo seleccionado de forma que quede más de un año antes del momento actual se hace solo para ver cómo se comportarán las instancias de estrategias en la parte de la historia que no se ha utilizado al optimizar sus parámetros.
El simulador estándar de MetaTrader 5 es capaz de realizar pasadas únicas y optimización teniendo en cuenta la presencia del llamado periodo forward. Al utilizarlo, el simulador dividirá todo el periodo de prueba especificado en dos partes: el periodo principal y el periodo forward. Al final del periodo principal, todas las transacciones se cerrarán y el balance de la cuenta comercial se restablecerá al estado inicial. A continuación, el asesor experto trabajará de nuevo en el periodo forward, y todas las estadísticas recogidas por el simulador se calcularán por separado para el periodo principal y el periodo forward.
En el campo del aprendizaje automático, los términos dentro de la muestra y fuera de la muestra (IS y OOS) se utilizarán a menudo para referirse al conjunto de datos en el que se entrenan y validan los modelos. En nuestro ámbito, el periodo principal desempeñará el papel de IS y el periodo forward el de OOS. Aunque conviene tener en cuenta que la OOS es un concepto más amplio que el de periodo forward: podemos ejecutar pruebas de un EA sin especificar un periodo forward en el simulador, pero si el periodo de prueba se sitúa fuera del periodo sobre el que se ha realizado la optimización, seguirá siendo una prueba OOS.
Como apenas hemos utilizado las pruebas OOS en ninguna parte antes (excepto al final de este artículo), es un buen momento para ver si hay alguna esperanza de mantener, al trabajar en un periodo forward, los resultados comparables mostrados por los asesores expertos en el periodo principal.
Periodo forward para los asesores expertos
Echemos un vistazo a los resultados mostrados por los asesores expertos del artículo la semana pasada para el grupo de estrategias seleccionadas manualmente y los principales grupos de estrategias seleccionadas por el máximo beneficio automatizado. Tomaremos todo el año 2023 como periodo forward. Asimismo, mantendremos los tres meses de 2024 en reserva por ahora. El resultado deseado para nosotros será un beneficio en el periodo forward unas cinco veces menor que en el periodo principal, ya que el periodo forward es cinco veces más corto que el periodo principal. La reducción en el periodo forward deberá ser preferiblemente igual o inferior a la del periodo principal.
Empezaremos con un grupo de estrategias seleccionadas manualmente (el asesor experto BaselineExpert.mq5). En el gráfico, la sección vertical de la línea azul separa claramente el periodo principal del periodo forward. En este límite, el balance de la cuenta volverá a ser de $10 000. La parte del gráfico correspondiente al periodo forward ocupará solo una pequeña parte de todo el gráfico. Si necesitamos examinarlo con detalle, podremos ejecutar una pasada aparte del simulador solo en el intervalo temporal que se refiere aquí al periodo forward.
Periodo principal
Periodo forward
Fig. 1. Resultados del asesor experto BaselineExpert.mq5 en los periodos principal y forward
Pero en este caso, incluso sin un pasada aparte para el periodo forward, resulta claramente visible que los resultados son significativamente peores. Eso no quiere decir directamente que haya que desechar la estrategia. La reducción ha aumentado del 10% al 12% y el periodo de recuperación se ha prolongado durante más de seis meses. Pero aún no se ha invertido la tendencia de la curva de balance. ¿O se trata ya de un giro de 180 grados? En definitiva, se mire como se mire, los resultados deben mejorarse.
Veamos ahora el mejor grupo seleccionado sin clusterizar los conjuntos (asesor experto OptGroupExpert.mq5).
Periodo principal
Periodo forward
Fig. 2. Resultados del asesor experto OptGroupExpert.mq5 en los periodos principal y forward
Para este grupo de estrategias, los resultados también son significativamente peores de lo esperado, a pesar de que hemos obtenido un pequeño beneficio al final del periodo forward. La reducción se ha multiplicado casi por una vez y media. Parece que el mejor grupo en el periodo principal deja de serlo en el forward.
Veamos los resultados del grupo seleccionado con clusterización de conjuntos de parámetros (asesor experto OptGroupClusterExpert.mq5), aunque ya existe una fuerte sospecha de que los resultados serán más o menos los mismos que en los dos casos anteriores.
Periodo principal
Periodo forward
Fig. 3. Resultados del asesor experto OptGroupClusterExpert.mq5 en los periodos principal y forward
Sí, la corazonada ha resultado correcta. Aquí los resultados son igual de incomprensibles, con una reducción aún más considerable. Por lo tanto, no presentaremos resultados para el mejor grupo seleccionado del archivo donde solo se ha dejado un conjunto en cada clúster. Son más o menos iguales.
Esto plantea una pregunta legítima: ¿tenemos siquiera algún grupo cuyos resultados en el periodo forward previsto se ajusten a nuestras expectativas? Para responder a esta pregunta, volveremos a optimizar el asesor experto, pero con un periodo forward, para no ejecutar manualmente el asesor experto en el simulador en el periodo forward para todos los grupos de conjuntos de parámetros obtenidos durante la optimización anterior.
Resultados de la optimización con el periodo forward
Así pues, tenemos los resultados de la optimización con el periodo forward para el asesor experto OptGroupClusterExpert.mq5. Como archivo de conjuntos de parámetros, hemos utilizado un único archivo de conjuntos para cada uno de los 64 clústeres. Para el análisis inicial de los resultados de optimización, probablemente estaremos bastante satisfechos con el Excel habitual. Exportaremos los resultados de la optimización de los periodos principal y forward a archivos XML y los guardaremos en formato Excel:
Fig. 4. Archivos fuente con los resultados de la optimización en el periodo principal (IS) y forward (OOS)
En el archivo del periodo forward, tenemos la columna Back Result, que contiene el resultado obtenido en el periodo principal con el mismo conjunto de parámetros optimizados. Eso está bien, pero nos gustaría ver también todas las demás características del periodo principal. Por ello, vamos a fusionar los datos de estas dos tablas en una sola usando la columna clave Pass. Los mismos valores en esta columna se corresponderán con las mismas combinaciones de parámetros de entrada en la pasada.
Tras la combinación, colorearemos los datos relativos al periodo principal y al periodo forward con colores diferentes, ocultaremos temporalmente algunas columnas y clasificaremos los datos según la rentabilidad normalizada decreciente en el periodo principal:
Fig. 5. Resultados combinados del periodo principal y forward
Se ve claramente que para los mejores resultados sobre el periodo principal, los resultados sobre el periodo forward son mayoritariamente negativos. No podemos decir que sean resultados muy malos -una pérdida del 3% al 5% del balance inicial al año-, pero desde luego tampoco pueden calificarse de buenos.
Recordemos cómo obtenemos los valores de las columnas Forward Result y Back Result. Este es el resultado de la función OnTester() retornado por el asesor experto después de una pasada. Llamaremos a este valor beneficio normalizado y lo calcularemos según la siguiente fórmula:
Result = Profit * (10% / EquityDD),
donde Profit es el beneficio obtenido en el periodo de prueba, EquityDD es la reducción relativa de los fondos durante el periodo de prueba.
El significado de esta magnitud calculada es el beneficio estimado para el periodo de prueba, que podría obtenerse modificando el tamaño de las posiciones abiertas de modo que la reducción relativa máxima alcance el 10%.
Aquí cabe señalar que los resultados de este indicador pueden compararse correctamente si se utiliza el mismo coeficiente de escala de posición coeff = (10% / EquityDD). Nos resultará problemático obtener el valor de este coeficiente para el periodo principal durante el proceso de pruebas forward, así que haremos este ajuste ahora. La fórmula de recálculo será la siguiente:
ForwardResultCorrected = ForwardResult * (coeff_IS / coeff_OOS)
= ForwardResult * (EquityDD_OOS / EquityDD_IS)
Tras aplicar el ajuste, obtendremos estos resultados:
Fig. 6. Tabla de resultados tras recalcular el beneficio normalizado del periodo forward
Podemos ver que los resultados en el periodo forward han aumentado en valor absoluto. Esto es correcto por los siguientes motivos. Imaginemos que hemos tomado, por ejemplo, el segundo conjunto de parámetros en el periodo principal. Suponiendo que la reducción haya sido del 1,52%, aumentaremos el tamaño de la posición en 10 / 1,52 = 6,58 veces para alcanzar la reducción objetivo del 10%. Entonces, si aún no sabemos nada sobre el periodo forward, deberíamos haber aumentado el tamaño de las posiciones en un factor de 6,58 también en él. Pero en este caso, hemos obtenido un beneficio de -98 en el periodo forward, el beneficio normalizado deberá calcularse multiplicando el beneficio por el mismo factor de 6,58. Así que obtendremos -635 en lugar de -240. El valor de -240 es más bajo porque la reducción ha sido casi tres veces superior en el periodo forward (4,03% en lugar de 1,52%) y, al calcular el beneficio normalizado, el coeficiente ha sido de 10 / 4,03 = 2,48, es decir, casi tres veces inferior.
Vale, hemos visto algunos resultados que no son muy agradables. Vamos a tratar de encontrar algo más tranquilizador ahora. En primer lugar, veremos si tenemos algún resultado positivo en el periodo forward. Clasificaremos los datos según la columna Forward Result Corrected y veremos lo siguiente:
Fig. 7. Tabla de resultados clasificada según el resultado del periodo forward
Aun así, tenemos grupos de conjuntos en los que también hay resultados positivos en el periodo forward. Se corresponden con los grupos para los que se han obtenido beneficios normalizados del orden de 15000-18000 en el periodo principal. Vemos que la reducción no difiere mucho en los periodos principal y forward, y el beneficio normalizado en el periodo forward es aproximadamente una quinta parte del beneficio normalizado en el periodo principal.
¿Así que es posible elegir buenos grupos?
Una cuestión filosófica
En realidad se trata de una cuestión muy complicada. Puede formularse de muchas maneras distintas. Por ejemplo:
- ¿Tenemos derecho a usar la selección ajustada al periodo forward?
- ¿No nos estaríamos engañando a nosotros mismos, esperando que esta elección produjera resultados similares en lo sucesivo?
- ¿Hasta qué punto se puede confiar en esta elección?
- ¿Serían los resultados deliberadamente mejores en el nuevo periodo tras el periodo forward si seleccionáramos el grupo considerando el periodo forward, en comparación con la selección sin pensar en el periodo forward?
- ¿En qué periodo forward es probable que se repitan los resultados? ¿Es comparable al tamaño del periodo forward?
- Si efectuamos un procedimiento de selección similar, por ejemplo, cada año, ¿significará que siempre tendremos un buen grupo para el año siguiente? ¿Y si es cada seis meses? ¿O cada semana?
Estas formulaciones, aunque tengan una base común, implican aspectos diferentes.
Para intentar responder de algún modo a estas preguntas, deberemos recordar el enfoque bayesiano. Desde el principio, estamos formulando una serie de hipótesis (o supuestos) y luego estimando sus probabilidades hasta que disponemos de nuevos datos. Tras el experimento, actualizamos nuestras estimaciones considerando los nuevos datos. Es decir, algunas hipótesis se hacen más probables a nuestros ojos, y otras menos. Aquí consideraremos que la probabilidad es el grado de confianza que tenemos en el resultado de un evento.
Nuestra hipótesis principal será que la selección de grupos considerando el periodo forward mejora los resultados obtenidos en el periodo posterior al forward. Hipótesis alternativa: la selección de grupos considerando el periodo forward no mejora los resultados.
Un posible experimento consistiría en seleccionar un número de grupos con un periodo forward y un número de grupos sin periodo forward. A continuación, probaremos todos los grupos seleccionados en el periodo posterior al forward.
Si los resultados son mejores para los grupos considerando el periodo forward que para los grupos sin considerar el periodo forward, se trataría de una prueba débil a favor de la hipótesis principal. Nuestra confianza en la veracidad de la hipótesis principal aumentará.
Si los resultados de los grupos seleccionados sin tener en cuenta el periodo forward resultan ser aproximadamente los mismos o mejores, se trataría de una prueba débil a favor de la hipótesis alternativa. Dicho esto, no podemos rechazar completamente ninguna de las dos hipótesis, ya que el rendimiento de cualquier grupo de estrategias en el periodo posterior al periodo forward dependerá de muchos otros factores, además de la forma en que se seleccionan los grupos. Puede que simplemente haya sido un periodo en general poco exitoso para las estrategias utilizadas y que, por tanto, una determinada forma de seleccionar las estrategias en grupos no haya tenido un efecto notable.
Probablemente no podamos permitirnos mucho más que eso.
Conviene señalar que la frase "considerando el periodo forward" puede no entenderse correctamente. Si aplicamos la selección del periodo forward, significará que el periodo que antes era el periodo forward (OOS) ahora, aunque sigamos refiriéndonos a él como periodo forward, deja de ser el periodo OOS y pasa a ser el periodo IS. Esto significa que tendremos que utilizar un nuevo periodo forward (forward a forward, disculpe la tautología) para evaluar el rendimiento comercial.
Vamos a describir más concretamente el experimento que queremos realizar para obtener más información. Supongamos que tenemos datos históricos de 2018 a 2023, ambos inclusive. Basándonos en ellos, queremos seleccionar un grupo de estrategias que obtengan buenos resultados en 2024. Entonces podemos hacer dos cosas:
- Realizar la optimización para el periodo 2018-2023 (IS) y seleccionar el mejor grupo según sus resultados.
- Realizar la optimización en el periodo 2018-2022 (IS) con validación simultánea en el periodo forward 2023 (OOS), y luego seleccionar el mejor grupo que ofrezca buenos resultados y aproximadamente iguales en ambos periodos.
En el segundo método, lo más probable es que seleccionemos un grupo diferente al del primero. Sus resultados serán ligeramente peores, pero podemos decir de él que ha durado un año en un periodo OOS que no ha participado en la optimización. Y en el primer método no podemos decir lo mismo del grupo seleccionado, porque no lo hemos verificado fuera del periodo IS. Pero en el primer método hemos optimizado (entrenado) al grupo durante un periodo más largo, ya que en el segundo hemos tenido que asignar 2022 al periodo forward y no utilizarlo para la optimización.
¿Cuál sería la mejor forma de hacerlo? Vamos a intentar un experimento de este tipo comparando los resultados de los grupos seleccionados de las dos formas al negociar en 2024.
Primera selección
Para la selección de la primera forma, primero tendremos que optimizar una sola instancia de la estrategia para el periodo 2018 - 2023. Antes, disponíamos de dicha optimización para el periodo hasta 2022 sin incluir 2023. Tras la optimización, obtendremos conjuntos de parámetros que dividiremos en clústeres como se describe en el último artículo. A continuación, realizaremos una optimización de la selección de grupos buenos a partir de los ocho conjuntos de parámetros. Veamos los resultados de los mejores grupos de conjuntos encontrados para el periodo 2018-2023 y 2024:
Fig. 8. Resultados de la optimización OptGroupClusterExpert.mq5 para la selección de grupos para el periodo principal 2018 - 2023
Fig. 9. Resultados de la optimización de OptGroupClusterExpert.mq5 para seleccionar un grupo en un periodo de tres meses de 2024
Podemos ver que los mejores grupos encontrados en el periodo principal de 2018-2023 tienen resultados generalmente positivos en el periodo forward de 2024, pero bastante diferentes entre sí. Para realizar una prueba más exhaustiva, seleccionaremos el grupo superior, estableceremos su multiplicador de escala scale_ = 10 / 2,04 = 5 y lo ejecutaremos en el simulador en el periodo principal de 2023 y en el periodo forward de 2024.
2023
2024 (3 meses)
Fig. 10. Resultados del asesor experto OptGroupClusterExpert.mq5 para el mejor grupo de 2023 y 2024
Basándonos en estos resultados, no podremos evaluar realmente las perspectivas de comportamiento ulterior del EA con este grupo de conjuntos de parámetros de estrategias, pero al menos no observamos el inicio de una tendencia claramente pronunciada hacia una disminución de la curva de balance en 2024. Vamos a recordar estos resultados: volveremos a ellos más adelante para compararlos con los resultados obtenidos con el segundo método de selección.
Seleccionamos de la segunda forma
2023
2024 (3 meses)
Fig. 11. Resultados del asesor experto OptGroupClusterExpert.mq5 en 2023 y 2024
Obsérvese que la reducción para 2023 ha superado en casi dos veces la estimada para el periodo de prueba principal: 1.820 $ en lugar de 1.000 $.
Para seleccionar grupos considerando 2023 como periodo forward, aplicaremos el siguiente algoritmo:
- En la tabla combinada de resultados de optimización para 2018-2022 (periodo principal) y 2023 (periodo forward), calcularemos para todos los indicadores la relación entre sus valores en los periodos principal y forward. Por ejemplo, para el número de transacciones:
TradesRatio = OOS_Trades / IS_Trades.
Cuanto más cercanas a 1 se encuentren estas relaciones, más similares serán los valores de estos indicadores en los dos periodos. Para el indicador de beneficios, introduciremos un coeficiente en la relación que tenga en cuenta la diferente duración de los periodos, en un año el beneficio debería ser unas 5 veces menor que en cinco años:
ResultRatio = OOS_ForwardResultCorrected * 5 / IS_BackResult. - Luego calcularemos para todas estas relaciones la suma de sus desviaciones respecto a la unidad. Este valor supondrá nuestra medida de la diferencia entre los resultados de cada grupo en los periodos principal y forward:
SumDiff = |1 - ResultRatio| + ... + |1 - TradesRatio|. -
Debemos tener en cuenta que en el periodo principal y en el forward para cada pasada la reducción podría ser diferente. Después elegiremos la reducción máxima de dos periodos y la utilizaremos para calcular el factor de escala de las posiciones abiertas para lograr una reducción normalizada del 10%:
Scale = 10 / MAX(OOS_EquityDD, IS_EquityDD).
-
Ahora elegiremos preferentemente conjuntos en los que SumDiff sea menor y Scale sea mayor. Para ello, calcularemos el último indicador:
Res = Scale / SumDiff.
-
Vamos a clasificar todos los grupos según el valor Res calculado en el paso anterior en orden descendente. A continuación, en la parte superior de la tabla se encontrarán aquellos grupos cuyos resultados en los periodos principal y forward hayan sido más parecidos, siendo además menor la reducción en ambos periodos.
- Tomaremos el que salga mejor parado como primer mejor grupo. Para seleccionar el siguiente grupo, filtraremos todos los grupos que hayan cumplido los índices de los clústeres que forman el primer grupo, y volveremos a tomar el de la parte superior. Lo repetiremos un par de veces, filtrando ahora todos los índices incluidos en los grupos seleccionados anteriormente. Para el nuevo asesor experto, tomaremos ahora los cuatro grupos obtenidos.
Para probar el trabajo conjunto de los grupos seleccionados, crearemos uno nuevo basado en el asesor experto OptGroupClusterExpert.mq5 y le haremos pequeños cambios. Como este asesor experto no se utilizará para la optimización, podemos eliminarle las funciones OnTesterInit() y OnTesterDeinit(). También podemos eliminarle los parámetros de entrada que especifican los índices de los conjuntos de parámetros que se incluirán en el grupo, ya que los fijaremos rígidamente en el código según el procedimiento de selección realizado.
En la función OnInit(), crearemos dos arrays - strGroups para los grupos seleccionados y scales para los multiplicadores de estos grupos. Los elementos del array strGroups serán cadenas separadas por comas que contendrán índices de grupos de parámetros.
//+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { // Load strategy parameter sets int totalParams = LoadParams(fileName_, params); // If nothing is loaded, report an error if(totalParams == 0) { PrintFormat(__FUNCTION__" | ERROR: Can't load data from file %s.\n" "Check that it exists in data folder or in common data folder.", fileName_); return(INIT_PARAMETERS_INCORRECT); } // Selected set groups string strGroups[] = {"55,12,3,35,48,54,16,40", "11,54,33,30,62,6,10,23", "50,15,8,34,2,36,4,9", "26,42,25,22,36,51,53,0" }; // Scaling factors for selected set groups double scales[] = {4.16, 3.40, 3.33, 2.76 }; // Set parameters in the money management class CMoney::DepoPart(expectedDrawdown_ / 10.0); CMoney::FixedBalance(fixedBalance_); // Create an EA handling virtual positions expert = new CVirtualAdvisor(magic_, "SimpleVolumes_OptGroupForwardCluster"); CVirtualStrategyGroup *groups[ArraySize(strGroups)]; FOREACH(strGroups, { // Form the string from the parameter set indices separated by commas string strIndexes = strGroups[i]; // Turn the string into the array string indexes[]; StringSplit(strIndexes, ',', indexes); // Create and fill the array of all strategy instances CVirtualStrategy *strategies[]; FOREACH(indexes, { // Remove the cluster number from the parameter set string string param = CSVStringGet(params[StringToInteger(indexes[i])], 0, 11); // Add a strategy with a set of parameters with a given index APPEND(strategies, new CSimpleVolumesStrategy(param)) }); // Add the strategy to the next group of strategies groups[i] = new CVirtualStrategyGroup(strategies, scales[i]); }); // Form and add the group of strategy groups to the EA expert.Add(CVirtualStrategyGroup(groups, scale_)); return(INIT_SUCCEEDED); }
Guardaremos este código en el archivo OptGroupForwardClusterExpert.mq5 en la carpeta actual.
Vamos a echar un vistazo a los resultados de las pruebas de este EA. Además, al igual que la última vez, combinaremos dos periodos en una sola pasada: 2023 y los tres primeros meses de 2024.
2023
2024 (3 meses)
Fig. 12. Resultados del asesor experto OptGroupClusterForwardExpert.mq5 en 2023 y 2024
En este caso, los resultados para 2023 son claramente mejores: se observa una tendencia al alza durante todo el periodo, aunque también tenemos un periodo de marzo a julio en el que la curva de balance no muestra un aumento pronunciado. La reducción para este periodo también ha mejorado y está dentro del máximo previsto.
Para 2024, los resultados son también mejores, pero no especialmente bonitos. Tal vez tres meses sea un intervalo demasiado corto para que la imagen resulte tan bonita en ellos como en un intervalo largo de varios años.
Si comparamos estos resultados con los del primer método de selección de grupos positivos, aún no se aprecia ninguna ventaja clara para ninguno de los dos métodos. En general, los resultados resultan bastante parecidos, pero el segundo método nos ha exigido más esfuerzo que el primero. Sin embargo, como hemos esbozado claramente el algoritmo de acciones en el segundo método de selección, este podrá automatizarse en el futuro.
Conclusión
Como vemos, el experimento no ha aumentado nuestra confianza en que sea mejor asignar un periodo extra como forward y seleccionar los grupos según el mejor rendimiento en ambos periodos. Pero eso no significa que no debamos utilizar este enfoque. Nos ha faltado un poco de suerte con el uso de los tres meses de 2024 en la comparación, algo escasos: como ya hemos visto, la estrategia comercial utilizada puede tener periodos de crecimiento fluctuante del balance en torno a cero durante varios meses. Por lo tanto, no está claro si los tres primeros meses de 2024 son el comienzo de dicho periodo, que luego será sustituido por crecimiento, o si puede que no haya crecimiento en absoluto.
Podemos hacer un experimento similar retrasando los periodos un año. En este caso, el periodo principal comenzaría en 2017, la selección del segundo método sería para el periodo de 2022, y nos quedaría todo el 2023 y principios de 2024 para comparar los dos métodos.
Pero será mejor que continuemos. Nadie nos impide seleccionar una parte de los grupos de la primera manera, y otra parte de la segunda, y combinarlas luego en un asesor. No obstante, aquí nos surge la pregunta: ¿cuál es el número máximo de instancias de estrategias comerciales que podemos combinar en un EA? Es decir combinarlas de forma que su funcionamiento no ocupe demasiados recursos en el servidor y no requiera un aumento de RAM respecto a los valores típicos. Intentaremos aclarar esta cuestión en el próximo artículo o en uno de los próximos.
Gracias por su atención, y hasta la próxima.
P.D. Da la casualidad de que al preparar este artículo no hemos hecho ningún cambio en los archivos creados antes. Solo hemos añadido un nuevo archivo, por lo que ese será el único que adjuntemos a este artículo. Todos los demás archivos de código mencionados pueden tomarse del artículo anterior.
Traducción del ruso hecha por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/ru/articles/14549





- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso