Haciendo un sistema de trading en Python para MT. - página 11

 
Yuriy Asaulenko:

Los que leyeron el tema De la teoría a la práctica ya saben que mi sistema y el de A_K2 están construidos más o menos sobre la misma ideología: el trabajo de los canales. La única diferencia es que el mío fue construido hace un año. Ya he escrito antes, que ahora esta estrategia está implementada y probada en Python, con algunos cambios menores, pero no tiene sentido lanzarla - no se espera nada nuevo.

Como no tenía ninguna idea en particular, he estado desarrollando todo tipo de indicadores - uno de ellos está en el post anterior. He hecho una decena de ellos. Como resultado, he decidido cruzar erizo con erizo: combinar el trabajo en el canal con el seguimiento de la tendencia en un sistema consistente. Todavía no lo he probado en su totalidad, pero he practicado algunos elementos. Todo parece encajar, pero todavía tengo algunas preguntas. No puedo decir lo que saldrá en la práctica, puede que nada. Esperemos y veamos.

Yuriy, ¡hola! ¿Puedo descargar / mirar la última versión de su desarrollo para desarrollar el conocimiento y la experiencia de Python? :-)
 

Por si acaso, noticias para los que usan Python. La versión 3.6 ya no está en desarrollo, sólo habrá actualizaciones de seguridad. La ayuda será hasta los 21 años.

La versión actual es la 3.7. La actual es la 3.7.2. Yo estoy usando la 3.7.1 con la última Anaconda.

En realidad, rompí mi Anaconda, y cuando fui a instalar la nueva, descubrí que han cambiado muchas cosas. Como dicen, la versión 3.7 es más rápida (aún no lo he notado, antes estaba bien), se ha actualizado la sintaxis y se han añadido nuevas funciones.

 

Todavía no me he puesto con las redes neuronales y otras cosas de ML - estoy en la medición. Fabrico herramientas para medir los parámetros actuales del mercado y sus tendencias. Lo que ocurre es que ninguna red neuronal, bosque-árbol y otras Ml pueden idear ni calcular estos parámetros, pero pueden utilizarlo todo y generalizarlo.

Y aquí hay otra herramienta en Python.

Aquí sólo tenemos 3 horas, a 1 min TF. La curva mide la actividad del mercado. Por regla general, la actividad del mercado aumenta significativamente incluso antes de que el precio comience a moverse, y es un buen indicador, un precursor del comienzo del movimiento. El inicio de un descenso de la actividad es casi siempre el comienzo de un movimiento hacia un piso. En la imagen se puede ver que el indicador está incluso por delante de la MA(12) en el gráfico de precios.

Pero el indicador no determina la dirección del movimiento futuro. Es una cosa sencilla dibujar pequeños rectángulos cruzando puntos y desplazar la dirección, como se hace en la rama MO, puedes dibujarlos en tu mente y aquí hay un indicador de tendencia)). Si observamos el algoritmo, veremos que no sólo es una cuestión trivial, sino también innecesaria y perjudicial: destruye una serie de parámetros indicadores. Y el sistema hará un tratamiento conjunto de los indicadores, y lo hará de forma más óptima.

PD Me han sugerido aquí en privado que el indicador es similar al ATR.

De hecho, sí, también mide la volatilidad, pero las matemáticas son diferentes. Es la volatilidad como yo la entiendo,)) y en mi opinión refleja mejor la actividad comercial.

 

Por sugerencia de alguien aquí en el foro, implementé un filtro Kalman. Fui tan alabado, tan alabado...

En general, escribí allí, que es poco probable que haya un resultado tangible, pero sin embargo decidí comprobarlo.

Tengo la figura de MA 48 y el filtro de Kalman hecho sobre la base de este MA (para la comparación correcta debemos tratar con un mismo objeto).

Bueno, sí, es más rápido en alrededor de 1,5 veces, pero bien puede ser reemplazado con MA con un período de 28-30. No se solapan del todo, pero es difícil decir cuál es mejor, si MA o Kalman.

Conclusión: causa muchos problemas pero es poco útil. Con fines comerciales, por supuesto. No nos dedicamos a la navegación).

 

Necesitaba una regresión polinómica para un modelo de Python. Quizá tú también lo necesites.

Código fuente:

import matplotlib.pyplot as plt
import numpy as np 
from sklearn.preprocessing import PolynomialFeatures 
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Ridge
from sklearn.pipeline import make_pipeline

# Подготовка данных
x=np.linspace(-5,5,num=100)
Y =np.array([(0.13*x1**3-0.5*x1**2-0.8*x1-0.1) for x1 in x])
# график исходной кривой.
plt.plot(Y)
X=x[:, np.newaxis]
N=3
# полином регрессия
model=make_pipeline(PolynomialFeatures(N, include_bias=False), Ridge())
model.fit(X,Y)
y_plot = model.predict(X)
# накладываем поверх графика линию регрессии
plt.plot(y_plot)

Gráfico:

No se trata de un gráfico, sino de dos. Se superponen completamente, lo que es de esperar ya que tanto la curva original como la regresión son polinomios de grado 3. El error es del orden de 1e-3.

 

Otro modelo de regresión polinómica. Su error es ya del orden de 1,0e-15.

import matplotlib.pyplot as plt
import numpy as np 
from sklearn.preprocessing import PolynomialFeatures 
from sklearn.linear_model import LinearRegression
#from  sklearn.linear_model import Ridge
#from  sklearn.pipeline import make_pipeline

#  Подготовка данных
x=np.linspace(-5,5,num=100)
Y =np.array([(0.13*x1**3-0.5*x1**2-0.8*x1-0.1) for x1 in x])
plt.plot(Y)
X=x[:, np.newaxis]
N=3
#  расчет и вычисление линии регрессии
poly=PolynomialFeatures(N,include_bias=False)
Xm=poly.fit_transform(X)
reg = LinearRegression().fit(Xm, Y)
y_plot=reg.predict(Xm)
#  график линии регрессии
plt.plot(y_plot)

No muestro el gráfico, no ha cambiado. Véase el post anterior.

 

Ahora vea si el MA puede reemplazar la línea de regresión. Ver imagen.

Verde - línea de regresión (polinomio de 3er grado), naranja - MA(350).

Me costó mucho tiempo seleccionarla, pero ni siquiera fui capaz de acercarme a ella. Este MA, quizás, es uno de los mejores. Por cierto, también se trata de la utilidad de los indicadores sintonizables).

En el futuro, es posible que realicemos más experimentos con líneas de regresión.

 
Yuriy Asaulenko:

Por sugerencia de alguien aquí en el foro, implementé un filtro Kalman. Recibí tantos elogios, tantas alabanzas...

- No me gustó la voz de Pavarotti, tiene mal acento, no da las notas...

- ¿Estuviste en el concierto de Pavarotti?

- No, me dijo Rabinovich por teléfono.

 
TheXpert:

- Así que no me gustaba Pavarotti, tiene mal acento, no sabe dar las notas...

- ¿Ha asistido a un concierto de Pavarotti?

- No, me dijo Rabinovich por teléfono.

Si va a aplicar el filtro de Kalman en el comercio, puedo enviarle un artículo. Es un algoritmo clásico, sin ningún tipo de pensamiento artificial. Pero tendrás que programarlo tú mismo. El artículo sólo contiene matemáticas. Se formará su propia opinión, y no se guiará por Rabinowitz).

Razón de la queja: