Regresión Bayesiana - ¿Alguien ha hecho un EA utilizando este algoritmo? - página 45

 
http://www.quantalgos.ru/?p=1898 quizás el autor de este hilo se beneficie...
Предсказание чего угодно с использованием Python | QuantAlgos
  • 2016.03.12
  • www.quantalgos.ru
Небольшая статья с ресурса http://www.talaikis.com/ о построении простой стратегии, использующую наивный байесовский классификатор при создании процесса возврата к среднему. Весь код в статье приведен на языке Python. Это достаточно большая область исследований, но расскажем все очень кратко. Мы попытаемся найти взаимоотношение между...
 
Ilnur Khasanov:
http://www.quantalgos.ru/?p=1898 quizás el autor de este tema se beneficie...
Hizo algo similar al volver a la media, de una manera ligeramente diferente. Funciona, pero no se puede liberar en el real. Hay problemas cuyas soluciones no están en absoluto claras. La principal desventaja del método es que hay que demostrar constantemente que uno tiene razón y no el mercado. :)
 

Generador de números pseudoaleatorios. (PRNG)

Utilizando el método de coordenadas polares sugerido anteriormente, transformé МТ4 PRNG en PRNG con un valor aleatorio normalmente distribuido.

Para comprobar visualmente la corrección del código, he proyectado los resultados en el gráfico de precios.

Esto es lo que muestra el PRNG básico después de 1000 llamadas. Las áreas de los rectángulos del histograma son proporcionales al número de números aleatorios generados que encajan en ese rango de la escala vertical.


Ahora, convertir esos miles de aciertos utilizando las fórmulas del método da como resultado

una campana perfectamente adecuada.

 
Yuri Evseenkov:

Utilizando el método de coordenadas polares propuesto anteriormente, convertimos el PRNG de MT4 en un PRNG con una variable aleatoria normalmente distribuida.

Una vieja bicicleta de la época de mql4.com.
 

A un intento de aplicar la fórmula bayesiana. Otra vez.

Tarea. Utilizando el teorema de Bayes, determine qué valor de una garrapata que aún no ha llegado es más probable.

Dada. Series temporales x,y.

y=ax+b Una línea desde el último tick hasta el futuro.

P(a,b|x,y)=P(x,y|a,b)*P(a)*P(b)/P(x,y); (1) Fórmula de Bayes.

P(a,b|x,y)es la probabilidad de que los coeficientes a y b correspondan a las coordenadas x e y de un futuro tic.

Necesitamos encontrar tales a y b que esta probabilidad (más correctamente dichamedida de probabilidad) sea máxima.

P(x,y|a,b) - tomemos el histograma real de la distribución de ticks por niveles de precios como función de probabilidad. La función está definida por una matriz de dos dimensiones: rango de precios - probabilidad, relación porcentual de ticks que caen dentro de este rango con respecto al número total de ticks.

P(b) - la distribución normal de los incrementos se toma como una probabilidad a priori b. Se utiliza el PRNG con el valor distribuido normalmente.

El coeficiente P(a) determina la pendiente de la recta y el signo del incremento previsto. De momento estoy pensando en utilizar el código de regresión lineal que he publicado antes. Es decir, tomar la probabilidad del coeficiente a encontrado allí como la unidad. Y en (1) sustituir la probabilidad P(a) calculada teniendo en cuenta la diferencia de esta a y la calculada para la y dada.

¿Quizás tengas alguna idea sobre cómo se comporta el signo de los incrementos de cada tick?


 

Definitivamente, no es necesario poner garrapatas en la fórmula. Cualquiera puede generar esas garrapatas en FORTS, lo que se hace todos los días.

El problema no está en los métodos matemáticos, más bien. Pero en la adecuación de la elección de los datos a aplicar.

 
¿Por qué tomar garrapatas artificiales? Se puede aprender a predecirlos sin necesidad de matemáticas superiores. Pregúntale a MQ cómo.

Toma garrapatas reales, 10.000 piezas y mira la distribución. Eso sería al menos práctico.
 
Alexey Burnakov:
¿Por qué tomar tics artificiales? Se puede aprender a predecirlos sin necesidad de matemáticas superiores. Pregúntale a MQ cómo.

Coge garrapatas reales, 10.000 piezas y mira la distribución. Al menos eso sería práctico.

Así, la función de probabilidad P(x,y|a,b) en (1) es la distribución real de los ticks reales (volúmenes de ticks). Es extremadamente raro que sea normal. Y P(a) y P(b) son probabilidades correctoras, por leyes tomadas como probabilidades a priori.

¿Qué pedir a MQ? ¿El principio de la modelización de los ticks en el probador de estrategias? Sí, debe haber algún principio. Tal vez conociéndolo, podamos crear "griales" de probadores. Pero hasta ahora no puedo desarrollarlo en modo de prueba, ya que no tengo ni historial de ticks, ni práctica para trabajar con él. Todo será en tiempo real.

Me interesan sus palabras:

"En mis experimentos no hago regresión y valores de precios (o sus transformaciones) en absoluto, predigo el signo, pero se podría decir que esto también forma parte de la información de precios.

Mis errores son así:

0 1

0 0,58 0,42

1 0,43 0,57

O más o menos como originalmente:

1 - correcto, 0 - error: 1, 1, 1, 0, 0, 1 , 1, 1, 0, 1

Y la distribución de probabilidad resultante debe ser lo más diferente posible de 0,5 / 0,5. Si obtenemos la inseparabilidad mutua de tales resultados, llegaremos a la distribución binomial, y hay muchas, muchas fórmulas para ella y pruebas estadísticas" Fin de la cita.

¿Qué es lo que realmente rige la distribución binomial en el caso de la predicción de un signo? ¿Cuál es la independencia mutua de los resultados? Gracias.

 
Yuri Evseenkov:

Así, la función de probabilidad P(x,y|a,b) en (1) es la distribución real de los ticks reales (volúmenes de ticks). Es muy raro que sea normal. Y P(a) y P(b) son probabilidades correctoras, por leyes tomadas como probabilidades a priori.

¿Qué pedir a MQ? ¿El principio de la modelización de los ticks en el probador de estrategias? Sí, debe haber algún principio. Tal vez conociéndolo, podamos crear "griales" de probadores. Pero no puedo desarrollarlo en modo de prueba, ya que no tengo ni historial de ticks, ni práctica para trabajar con él. Todo será en tiempo real.

Me interesan sus palabras:

"En mis experimentos no hago regresión y valores de precios (o sus transformaciones) en absoluto, predigo el signo, pero se podría decir que esto también forma parte de la información de precios.

Mis errores son así:

0 1

0 0,58 0,42

1 0,43 0,57

O más o menos como originalmente:

1 - correcto, 0 - error: 1, 1, 1, 0, 0, 0, 1 , 1, 1, 0, 1

Y la distribución de probabilidad resultante debe ser lo más diferente posible de 0,5 / 0,5. Si obtenemos la independencia mutua de tales resultados, llegamos a la distribución binomial, y para ella hay muchas, muchas fórmulas y pruebas estadísticas" Fin de la cita.

¿Realmente rige la distribución binomial en el caso de la predicción de un signo? ¿Cuál es la independencia mutua de los resultados? Gracias.

En orden. Sí, los ticks son generados por el algoritmo en el probador. La prueba en garrapatas reales aún no está en la versión. Hay un artículo en este sitio sobre cómo se generan estas garrapatas. No son garrapatas reales en absoluto.

Sobre la distribución binomial. Si se predice una variable binaria, se obtiene una matriz de 2*2 que muestra la precisión del reconocimiento. Se trata esencialmente de una distribución conjunta de las dos variables binarias, la variable objetivo y la variable simulada.

Si su secuencia de realizaciones de la variable objetivo i.i.d. es independiente e idénticamente distribuida, esto abre la posibilidad de aplicar muchos criterios. El resultado de lanzar una moneda es exactamente eso. Es un proceso Bernoulli. Así que los eventos son independientes entre sí. Si esto es válido, su distribución de probabilidad obedece a una distribución binomial. Por ejemplo, el número de aciertos tiene su probabilidad, que es aproximadamente normal.

Estoy escribiendo divagando, es tarde. Lo que realmente me gusta de las distribuciones binomiales, para una tabla cuadrática aplicar el criterio de chi-cuadrado, que muestra la importancia de que su resultado es diferente de una conjetura al azar. Puede hacer lo mismo con las tablas multinomiales (cuadradas no vinculantes). También para las variables binarias, hay muchas técnicas de aprendizaje automático.
 

Usar los ticks para la predicción es peligroso en mi opinión, y el modelo debería ser configurado para cada broker por separado.

Si tomamos los ticks del probador de estrategias habrá una seria diferencia con los reales, porque los ticks en el probador son generados por una plantilla a partir de valores ohlc de barras de minutos(https://www.mql5.com/en/articles/75). Por eso nadie prueba a los revendedores, sino que los pone inmediatamente en una cuenta real y los optimiza por el camino.

En cuanto a los ticks reales, pueden variar mucho de un corredor a otro. Por ejemplo en este hilo https://www.mql5.com/en/forum/64228/page2#comment_1960403 (https://c.mql5.com/3/78/tbd.png ) se adjunta una captura de pantalla, esta es la distribución de los incrementos de ticks en el mismo marco de tiempo en dos corredores diferentes. No recuerdo la duración del intervalo, algo de un día a una semana. Generalmente coinciden, pero uno de ellos tiene dos veces más ticks sin cambio de precio. Si se comparan más de diez brokers creo que puede haber grandes diferencias, sobre todo en el caso de los "candelabros sorpresa".
Como alternativa, se pueden eliminar todas las garrapatas sin modificar el precio. Entonces hay un matiz que es que el evento OnTick() puede ser omitido en el EA y un nuevo precio con el anterior será enviado a la terminal. Es decir, no 1,23456 -> 1,23490 -> 1,23410, sino simplemente 1,23456 -> 1,23410. Y en lugar de dos cambios, tu modelo tendrá uno.
Resultará que el intervalo de tiempo entre dos ticks vecinos no está definido y habrá vacíos de datos, creo que eso es malo.
Todavía vale la pena probar, es necesario utilizar MT4 y el programa Tickstory Lite (hay una versión gratuita) para insertar ticks reales en el probador (se toman del corredor Dukascopy). Sólo se debe utilizar el terminal MT4 con una build inferior a 950, de lo contrario la versión gratuita de tickstory hará datos de prueba con spread cero.

Intenté algo con ticks, como encontrar un promedio y comprar y vender si el precio actual se desvía fuertemente del promedio. Si había algún beneficio, entonces el spread se lo estaba comiendo todo y me he ido a plazos más grandes.

The Algorithm of Ticks' Generation within the Strategy Tester of the MetaTrader 5 Terminal
The Algorithm of Ticks' Generation within the Strategy Tester of the MetaTrader 5 Terminal
  • 2010.06.02
  • MetaQuotes Software Corp.
  • www.mql5.com
MetaTrader 5 allows us to simulate automatic trading, within an embedded strategy tester, by using Expert Advisors and the MQL5 language. This type of simulation is called testing of Expert Advisors, and can be implemented using multithreaded optimization, as well as simultaneously on a number of instruments. In order to provide a thorough testing, a generation of ticks based on the available minute history, needs to be performed. This article provides a detailed description of the algorithm, by which the ticks are generated for the historical testing in the MetaTrader 5 client terminal.
Razón de la queja: