Discusión sobre el artículo "Algoritmo de autoadaptación (Parte IV): Funcionalidad adicional y pruebas" - página 5
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
1. Si suponemos que se ha encontrado un patrón general que funciona aproximadamente igual en cada uno de N instrumentos, entonces estimar aproximadamente la capacidad del sistema en términos de aumento de los instrumentos negociados simultáneamente, sobre la base de los resultados para 1 instrumento, puede ser como sigue:
O = Z * Tcr * ( 1 + ( N - 1 ) * Corr ) / Tp,
donde
Z - número de operaciones (serie de operaciones) para un instrumento,
Tcr - duración media de una operación en días,
N - número de instrumentos,
Corr - algún coeficiente de correlación entre ellos [0...1],
Tp - período negociado en días.
Si O es menor que uno, es más probable que la reducción máxima no aumente al aumentar el número de instrumentos negociados simultáneamente, y el beneficio total tenderá a aumentar N veces.
Para negociar cien instrumentos a la vez, será necesario garantizar el tiempo mínimo de permanencia en una operación (lo que es muy difícil para una estrategia contra-tendencia) y la correlación mínima de los instrumentos negociados (lo que también es difícil). Bueno, o la señal para entrar aparece tan raramente que es difícil hablar del sistema.
2. He esbozado y probado apresuradamente el "cierre parcial" al operar con varios símbolos. Los drawdowns han disminuido, el gráfico de equidad está más cerca del gráfico de equilibrio. Pero siguen apareciendo grandes detracciones. No a la misma profundidad y un poco en los lugares equivocados cuando se compara sin "cierre parcial".
Para que el tail cutting (cierre de las series más no rentables o parte de ellas) funcione bien y con regularidad, es necesario alimentar constantemente el balance con series cerradas con éxito, y esta afluencia debe ser suficiente para cerrar el minus y dejar un 20% en el bolsillo (en el balance). Pero cuando existe tal mecanismo de entrega de beneficios en series "junior", no tiene sentido involucrarse en series "senior".
Si consideramos series bloqueadas en un instrumento, cuando, por ejemplo, mantenemos una compra de menos (1) y cerramos varias ventas (2), para mí no funcionó (me refiero a un resultado positivo estable durante un largo período). No estoy haciendo campaña de nada, y sin matemáticas, exclusivamente a esto: "...lo he comprobado...". :)
En general, el sistema presenta una asimetría pronunciada. En caso de un movimiento desfavorable, la posición se acumula. En ese caso, el porcentaje de entradas correctas debería ser mucho mayor que el de las erróneas, o habría que esperar un pullback suficiente o reservas importantes para el drawdown. Por otra parte, es posible acumular la posición en cada bloque formado, tanto contra la entrada como hacia el beneficio. Siempre que todas las series se cierren con el beneficio total previsto, esta decisión da mejores resultados. Además, entrar sólo en los bloques de "cola" da una disminución de drawdown.
El sistema es interesante, es muy variable en diferentes direcciones. Por ejemplo, estoy probando los siguientes parámetros:
-Bloques:
-- número mínimo y máximo de pasos para buscar tendencias/planos (8 - ¿es una sección muy corta? 50 - ¿necesito tantos?),
-- tamaño del conjunto de bloques, inicio y paso del cambio de elevación en el conjunto,
-- dónde trazar el límite entre tendencia y aplanamiento,
Y también:
-En apertura:
-- si usar control de cobertura de activos (para un cierto conjunto de instrumentos con correlación aceptable, es mejor sin control),
-- si trabajar sobre señales de reversión (creo que es mejor cincelar en la dirección original o salir pero no dar la vuelta),
-- si una señal, entrar en el bloque contra el movimiento, en el movimiento o en ambos casos (aquí varía)
-- volumen de entrada: lote fijo, o valor fijo del bloque actual, o desde valor fijo del bloque de tamaño máximo
-- qué hacer al perder una señal: cerrar, buscar una nueva en otros parámetros, continuar en la última,
-- al cerrar:
-- planear salir de la serie por TP basado en expectativas estáticas del movimiento, o por un cierto beneficio en $ relativo al valor del bloque (como si quisiera $10 de cualquier serie, independientemente de drawdowns y acumulación)
-- si usar el beneficio total de todas las series abiertas y en qué volumen relativo al valor del bloque (¿30 en total de todas las series, y cerrar?)
-- si utilizar un mecanismo de cierre parcial.
Está claro que el autor no se ha hecho estas preguntas, y quizás todo sea innecesario. Está claro que le estoy dando vueltas y vueltas al sistema en la medida en que lo entiendo y la calidad de su implementación. Pero me gusta el sistema en sí y el proceso de su estudio, gracias al autor, sigo con interés.
Todas las preguntas-parámetros requieren múltiples pruebas, que es muy difícil en la versión original de la construcción de bloques (gran cantidad de cálculos). Traté de simplificar los cálculos y la construcción de conjuntos de bloques (utilizando fechas fijas raras de referencia para el cálculo, en lugar de los cálculos de la última barra). La velocidad de cálculo es casi cosmos, pero, por desgracia, me di cuenta de un deterioro en la calidad de las señales recibidas :( Ahora estoy arrugando mi cerebro cómo combinar...
También me enteré de que el control volumétrico funciona mejor que el control binario cuando el control de coberturas por activos. Binario - cuando controlamos sólo la dirección de las posiciones abiertas por divisa, sin tener en cuenta el volumen. Volumétrico - calculo el análogo de la pestaña "Activos" y abro nuevas posiciones desde cero o contra el importe acumulado. (Por cierto, ¿existe un medio estándar para obtener datos de esta pestaña en MQL5?)
De alguna manera, en general.
P.D. Cuando el sistema está diseñado para tomar decisiones en barras formadas (sólo en la apertura), no tiene SLs y TPs marcados en las posiciones (aunque pueden estar presentes en el algoritmo), "OHLC M1" ya contiene suficiente redundancia para realizar pruebas fiables.
Saludos.
1. Si asumimos que se ha encontrado un patrón general que funciona aproximadamente igual en cada uno de N instrumentos, entonces estimar aproximadamente la capacidad del sistema en términos de aumento de instrumentos negociados simultáneamente, basándose en los resultados para 1 instrumento, puede ser como sigue:
O = Z * Tcr * ( 1 + ( N - 1 ) * Corr ) / Tp,
donde
Z - número de operaciones (serie de operaciones) para un instrumento,
Tcr - duración media de una operación en días,
N - número de instrumentos,
Corr - algún coeficiente de correlación entre ellos [0...1],
Tp - período negociado en días.
Si O es menor que uno, es más probable que la reducción máxima no aumente al aumentar el número de instrumentos negociados simultáneamente, y el beneficio total tenderá a aumentar N veces.
Para negociar cien instrumentos a la vez, será necesario garantizar el tiempo mínimo de permanencia en una operación (lo que es muy difícil para una estrategia contra-tendencia) y la correlación mínima de los instrumentos negociados (lo que también es difícil). Bueno, o la señal para entrar aparece tan raramente que es difícil hablar del sistema.
2. He esbozado y probado apresuradamente el "cierre parcial" al operar con varios símbolos. Los drawdowns han disminuido, el gráfico de equidad está más cerca del gráfico de equilibrio. Pero siguen apareciendo grandes detracciones. No a la misma profundidad y un poco en los lugares equivocados cuando se compara sin "cierre parcial".
Para que el tail cutting (cierre de las series más no rentables o parte de ellas) funcione regularmente y bien, es necesario alimentar constantemente el balance con series cerradas con éxito, y esta afluencia debe ser suficiente para cerrar el minus y dejar un 20% en el bolsillo (en el balance). Pero cuando existe tal mecanismo de entrega de beneficios en series "junior", no tiene sentido involucrarse en series "senior".
Si consideramos series bloqueadas en un instrumento, cuando, por ejemplo, mantenemos una compra de menos (1) y cerramos varias ventas (2), para mí no funcionó (me refiero a un resultado positivo estable durante un largo período). No estoy haciendo campaña de nada, y sin matemáticas, exclusivamente a esto: "...lo he comprobado...". :)
En general, el sistema presenta una asimetría pronunciada. En caso de un movimiento desfavorable, la posición se acumula. En ese caso, el porcentaje de entradas correctas debería ser mucho mayor que el de las erróneas, o habría que esperar un pullback suficiente o reservas importantes para el drawdown. Por otra parte, es posible acumular la posición en cada bloque formado, tanto contra la entrada como hacia el beneficio. Siempre que todas las series se cierren con el beneficio total previsto, esta decisión da mejores resultados. Además, entrar sólo en los bloques de "cola" da una disminución de drawdown.
El sistema es interesante, es muy variable en diferentes direcciones. Por ejemplo, estoy probando los siguientes parámetros:
-Bloques:
-- número mínimo y máximo de pasos para buscar tendencias/planos (8 - ¿es una sección muy corta? 50 - ¿necesito tantos?),
-- tamaño del conjunto de bloques, inicio y paso del cambio de elevación en el conjunto,
-- dónde trazar el límite entre tendencia y aplanamiento,
Y también:
-En apertura:
-- si usar control de cobertura de activos (para un cierto conjunto de instrumentos con correlación aceptable, es mejor sin control),
-- si trabajar sobre señales de reversión (creo que es mejor cincelar en la dirección original o salir pero no dar la vuelta),
-- si una señal, entrar en el bloque contra el movimiento, en el movimiento o en ambos casos (aquí varía)
-- volumen de entrada: lote fijo, o valor fijo del bloque actual, o desde valor fijo del bloque de tamaño máximo
-- qué hacer al perder una señal: cerrar, buscar una nueva en otros parámetros, continuar en la última,
-- al cerrar:
-- planear salir de la serie por TP basado en expectativas estáticas del movimiento, o por un cierto beneficio en $ relativo al valor del bloque (como si quisiera $10 de cualquier serie, independientemente de drawdowns y acumulación)
-- si usar el beneficio total de todas las series abiertas y en qué volumen relativo al valor del bloque (¿30 en total de todas las series, y cerrar?)
-- si utilizar un mecanismo de cierre parcial.
Está claro que el autor no se ha hecho estas preguntas, y quizás todo sea innecesario. Está claro que le estoy dando vueltas y vueltas al sistema en la medida en que lo entiendo y la calidad de su implementación. Pero me gusta el sistema en sí y el proceso de su estudio, gracias al autor, sigo con interés.
Todas las preguntas-parámetros requieren múltiples pruebas, que es muy difícil en la versión original de la construcción de bloques (gran cantidad de cálculos). Traté de simplificar los cálculos y la construcción de conjuntos de bloques (utilizando fechas fijas raras de referencia para el cálculo, en lugar de los cálculos de la última barra). La velocidad de cálculo es casi cosmos, pero, por desgracia, me di cuenta de un deterioro en la calidad de las señales recibidas :( Ahora estoy arrugando mi cerebro cómo combinar...
También me enteré de que el control volumétrico funciona mejor que el control binario cuando el control de coberturas por activos. Binario - cuando controlamos sólo la dirección de las posiciones abiertas por divisa, sin tener en cuenta el volumen. Volumétrico - calculo el análogo de la pestaña "Activos" y abro nuevas posiciones desde cero o contra el importe acumulado. (Por cierto, ¿hay algún medio estándar para obtener datos de esta pestaña en MQL5?)
De alguna manera, en general.
P.D. Cuando el sistema está diseñado para tomar decisiones en barras formadas (sólo en la apertura), no tiene SLs y TPs marcados en las posiciones (aunque pueden estar presentes en el algoritmo), "OHLC M1" ya contiene suficiente redundancia para realizar pruebas fiables.
Interesante. Estoy de acuerdo con la fórmula para estimar el drawdown, en general la lógica es correcta.
En cuanto a la entrada de series cerradas, la lógica también es correcta, las series nuevas deben cerrarse con la mayor frecuencia posible. Aquí hay que mejorar la calidad del propio algoritmo, para que entre en series no rentables lo menos posible. Para ello, es necesario refinar los algoritmos de escala. Lo he refinado en la nueva versión y ya ha empezado a funcionar mucho mejor. La idea es que necesitas una base teórica de precios que describa qué y cómo funciona el mercado. Cuanto mejor sea el modelo teórico, menores serán los drawdowns y la correlación entre instrumentos.
Las posiciones bloqueadas tienen sentido, funciona peor sin ellas que con ellas (en mi algoritmo). Pero sólo en aquellos instrumentos para los que el crecimiento y la caída son simétricos. Para instrumentos asimétricos, necesitas usar parámetros asimétricos para generar una señal para posiciones largas y cortas. Es por eso que sólo se permiten posiciones largas en acciones por el momento, por lo que no se pueden bloquear series adicionales. El bloqueo es una mecánica condicional, necesaria para la visualización y para facilitar la reflexión. En realidad, cuando se negocia en red, por supuesto que no hay bloqueos.
Idealmente, este algoritmo y los bloqueos no son necesarios, es necesario calcular los puntos de mayor probabilidad de reversión del precio basado en los datos del mercado. Pero así es como se hace hasta ahora. Cuando la base teórica alcance el nivel necesario, el algoritmo se simplificará.
Según mis observaciones, tiene sentido construir una posición sólo contra el movimiento del precio. Si la posición es Comprar, entonces compre sólo en cada bloque bajista. Este enfoque en sí tira de la expectativa en un plus, sin todo por algunas peculiaridades teóricas de movimiento de los precios. se expresa especialmente en acciones. Es decir, el sentido es inherente a la negociación contra la tendencia en la dirección de la tendencia principal. Siempre es más rentable comprar un activo en su caída y vender en su crecimiento.
Tesis:
- El número mínimo y máximo de pasos no depende de las características del mercado, sino que depende únicamente de los parámetros del algoritmo. Cuanto menor sea el tamaño del paso, menor será la precisión, cuanto mayor sea el tamaño del paso, mayor será la precisión, pero se abrirán más posiciones. Los bloques son una convención creada para una mejor visualización. Puede reelaborar el sistema para que pueda analizar una ventana de 100 bloques, pero los resultados de negociación serán similares a los de una ventana de 24 bloques. Yo lo he hecho así.
- El tamaño del bloque se elige para que sea el mínimo, en el que el beneficio es posible, teniendo en cuenta las comisiones y los errores de cierre de bloque (porque se utilizan candelabros para el análisis). Una característica importante no se describe aquí. A medida que el tamaño del bloque disminuye, el porcentaje de sobreponderación debería aumentar, justamente por este error de tendencia, que se produce porque el precio de cierre de las velas no coincide con el precio de cierre del bloque. Todavía no he hecho esto, pero pienso hacerlo en el futuro. Esto mejorará significativamente la calidad de las señales. Pero el tamaño del bloque debe ser elegido en base a los parámetros del mercado. Debería cambiar dependiendo de la estadística pasada del mercado. Hay una peculiaridad que puede ayudar a corregir la escala antes del inicio de la serie.
- No existe un límite entre tendencia y plano, es una convención, basada en el hecho de que por término medio en el mercado la probabilidad de que cambie la dirección de cada siguiente paso es de aproximadamente el 50%. Pero hay instrumentos que tienen menos del 50%, es decir, que son tendenciales. Se utilizan desviaciones locales y en el futuro volverá a su media. Porque si este no es el caso, se puede ganar dinero inmediatamente con algoritmos más simples.
- Yo uso el control de cobertura de activos en la apertura.
- la señal de reversión no se trabaja, después del cierre todo comienza de nuevo, pero no es tan simple aquí también. Usted necesita trabajar a cabo, pero la base teórica no está listo para ello todavía.
- entrar sólo contra el movimiento
- El volumen de entrada es una cuestión importante. Debe ser corregido. He desarrollado varios métodos de corrección. Por separado para acciones y para divisas, el mecanismo no es sencillo. En acciones, hay que ajustar el volumen de la cartera, y en divisas también. El precio del bloque debe ser aproximadamente el mismo para todos los instrumentos. No debe negociar en lotes, sino en dólares y ajustar los lotes a partir del volumen de la operación en dólares. Operar con un número fijo de dólares (en acciones) aumenta las expectativas. Sobre las divisas todavía no he desarrollado un modelo teórico. ¿Depende el volumen del tamaño de la escala? Planeo implementar y probar esto en la nueva versión, pero hasta ahora el proceso no ha llegado a este punto.
- Cuando se pierde una señal, empiezo de nuevo.
- La salida de la serie se planifica sobre la base de los movimientos de las estadísticas y el punto de cierre teórico. Si perdemos el punto de cierre debido a factores no contabilizados, funcionan los mecanismos de compensación de las posiciones perdedoras. Cuanto mejor sea el modelo teórico, menos veces fallaremos. La corrección de 10$ devuelve el sistema a la expectativa 0 debido a la aleatoriedad.
- Creo que podemos utilizar el beneficio total, pero también debería ser dinámico. Es decir, debería cerrarse sólo si hubiera una desviación significativa del beneficio total respecto a la aleatoriedad (un pico brusco de precios). Tiene sentido lógico.
- Yo estaba planeando probar el mecanismo de cierre parcial. Pero todavía no sé cómo va a funcionar. Yo quería usarlo cuando se acerca el punto de cierre teórico. No un beneficio duro, pero el cierre gradual de las posiciones en el rango de +- 10% desde el punto de cierre. Este es un porcentaje condicional. Tendrá que ser calculado en base a algo, pero no he tratado este tema de cerca todavía.
Es una solución interesante en cuanto al control de la cobertura volumétrica, no se me había ocurrido a mí).
El sistema fue diseñado para trabajar en m1 ohlc, más adelante mostraré como difiere en el modo ohlc y en el modo ticks reales. Lo hice especialmente para ser insensible a la calidad de la historia y las interrupciones con el servidor durante el comercio.
Aquí se muestran muchos gráficos, a lo largo de varios años.
Si quieres que se evalúe tu TS, muestra al menos los resultados de la prueba NO sobre garrapatas (Every Tick), sino sobre garrapatas reales ( Every tick based on real ticks), al menos para este año, para 3-4 pares.
¿ También es difícil ?
Aquí hay 2 pruebas como se había prometido. La primera en OHLC 2020-2021 GBPUSD modo m1
y la segunda prueba en el mismo periodo e instrumento, pero en modo ticks reales desde una cuenta real.
Podemos ver que el beneficio por ticks es un poco mayor, el drawdown es un poco menor, las operaciones son más o menos las mismas, el gráfico de rentabilidad es casi el mismo.
Es comprensible, técnicamente el robot está hecho para trabajar según OHLC, y en el modo por ticks funciona un poco mejor debido a la mayor precisión. Pero son aspectos puramente técnicos. No voy a probarlo durante un período más largo y en un mayor número de instrumentos, no tiene sentido, y se necesita una hora y media para ejecutar 1 instrumento.
y se tarda una hora y media en hacer funcionar un instrumento.
¿Por qué es tan lento? Seguro que se puede acelerar sin perder funcionalidad.
¿Por qué es tan lento? Seguro que se puede acelerar sin perder funcionalidad.
Yo también creo que se puede acelerar, pero todavía no lo he hecho, sigo teniendo problemas para terminar la funcionalidad principal..... Implementaré todas las modificaciones desarrolladas, lo llevaré a una relación riesgo/beneficio adecuada y luego empezaré a optimizar el consumo de recursos. Queda poco en el plan algorítmico y mucho en cuanto a trabajo.
También creo que es posible acelerar, pero aún no lo he hecho, tengo problemas para terminar la funcionalidad básica..... Implementaré todas las modificaciones que he desarrollado, lo llevaré a una relación riesgo/beneficio adecuada y luego empezaré a optimizar el consumo de recursos. Queda poco en el plan algorítmico y mucho en cuanto a trabajo.
¿No se aceleraría el desarrollo si se pudiera probar rápidamente el Asesor Experto? Depende del propietario.
Aquí hay 2 pruebas como se había prometido. La primera en OHLC 2020-2021 GBPUSD modo m1.
y la segunda prueba en el mismo periodo e instrumento, pero en modo ticks reales desde una cuenta real.
Se puede observar que el beneficio por ticks es un poco mayor, el drawdown es un poco menor, las operaciones son más o menos las mismas, el gráfico de rentabilidad es casi el mismo.
Es comprensible, técnicamente el robot está hecho para trabajar según OHLC, y en el modo por ticks funciona un poco mejor debido a su mayor precisión. Pero son aspectos puramente técnicos. No voy a probarlo durante más tiempo y en un mayor número de instrumentos, no tiene sentido, y se tarda una hora y media para ejecutar 1 instrumento.
Gracias.
Si ambos gráficos son similares, entonces si filtras los ticks dentro de 1 minuto, será lo mismo.
Usted declara que su algoritmo funciona igual en todos los pares de divisas, pero nunca vio una prueba en todos los símbolos del Market Watch.
Y el algoritmo autoadaptativo no debería tener ningún parámetro fijo, como intervalos de tiempo, niveles fijos o número de pips, para abrir/cerrar órdenes.
¿No se aceleraría el desarrollo si el EA pudiera probarse rápidamente? Depende del propietario.
El desarrollo iría definitivamente más rápido si hubiera un especialista que lo hiciera rápidamente, y no la mitad de la funcionalidad en un año y luego con problemas.
El desarrollo iría definitivamente más rápido si hubiera un especialista que lo hiciera rápido, no la mitad de la funcionalidad en un año y luego con problemas.
No es un problema acelerar el algoritmo. Los que se dedican a tareas de optimización lo harán rápidamente.
La cuestión es otra. Hay algunos valores fijos en tus dibujos. Los he marcado.
¿De dónde has sacado estas cifras? Si se utilizan valores fijos en el comercio, entonces hay que cambiarlos todo el tiempo.
Acelerar el algoritmo no es un problema. Quienes se hayan dedicado a tareas de optimización lo harán rápidamente.
Es una cuestión diferente. Hay algunos valores fijos en tus dibujos. Los he marcado.
¿Cómo obtienes esas cifras? Si utilizas valores fijos en el comercio, tienes que cambiarlos todo el tiempo.