Erstellung eines Python-Handelssystems für MT. - Seite 11

 
Yuriy Asaulenko:

Diejenigen, die das Thema Von der Theorie zur Praxis gelesen haben, wissen bereits, dass mein System und das System von A_K2 in etwa auf der gleichen Ideologie aufgebaut sind - Kanalarbeit. Der einzige Unterschied ist, dass meiner vor einem Jahr gebaut wurde. Ich habe schon einmal geschrieben, dass diese Strategie jetzt in Python implementiert und getestet ist, mit einigen kleinen Änderungen, aber es macht keinen Sinn, sie zu starten - es wird nichts Neues erwartet.

Da ich keine besonderen Ideen hatte, entwickelte ich alle möglichen Indikatoren - einen davon finden Sie im obigen Beitrag. Ich habe etwa zehn davon gemacht. Daher habe ich mich entschlossen, Igel mit Igel zu kreuzen: die Arbeit im Kanal mit der Trendfolge in einem einheitlichen System zu kombinieren. Ich habe es noch nicht als Ganzes ausprobiert, aber ich habe einige Elemente geübt. Alles scheint zu passen, aber ich habe einige Fragen. Ich kann nicht sagen, was in der Praxis herauskommen wird, vielleicht gar nichts. Warten wir es ab.

Yuriy, hallo! Darf ich die neueste Version Ihrer Entwicklung herunterladen / ansehen, um Python-Kenntnisse zu entwickeln und davon zu lernen? :-)
 

Nur für den Fall, Neuigkeiten für diejenigen, die Python verwenden. Die Version 3.6 befindet sich nicht mehr in der Entwicklung, es wird nur noch Sicherheitsupdates geben. Die Unterstützung wird bis zu 21.

Die aktuelle Version ist 3.7. Die aktuelle Version ist 3.7.2. Ich benutze 3.7.1 mit dem neuesten Anaconda.

Ich habe meine Anaconda kaputt gemacht, und als ich die neue installieren wollte, musste ich feststellen, dass sich eine Menge geändert hat. Wie es heißt, ist die Version 3.7 schneller (ich habe es noch nicht bemerkt, ich kam vorher gut damit zurecht), die Syntax wurde aktualisiert und neue Funktionen wurden hinzugefügt.

 

Ich habe mich noch nicht mit neuronalen Netzen und anderem ML-Zeug beschäftigt, sondern mit der Messung von Daten. Ich stelle Instrumente zur Messung aktueller Marktparameter und ihrer Trends her. Die Sache ist die, dass kein neuronales Netz, Waldbäume und andere Ml diese Parameter weder ausdenken noch berechnen können, aber sie können sie alle verwenden und verallgemeinern.

Und hier ist ein weiteres Werkzeug in Python.

Hier sind es nur 3 Stunden, bei 1 min TF. Die Kurve misst die Marktaktivität. In der Regel nimmt die Marktaktivität deutlich zu, noch bevor der Kurs in Bewegung gerät, und ist ein guter Indikator, ein Vorläufer für den Beginn der Bewegung. Der Beginn eines Rückgangs der Aktivität ist fast immer der Beginn eines Umzugs in eine Wohnung. In der Abbildung können Sie sehen, dass der Indikator dem MA(12) auf dem Preisdiagramm sogar voraus ist.

Der Indikator bestimmt jedoch nicht die Richtung der künftigen Bewegung. Es ist eine einfache Sache, kleine Rechtecke durch sich kreuzende Punkte zu zeichnen und die Richtung zu verschieben, wie es in der MO-Branche getan wird, können Sie sie in Ihrem Kopf zeichnen und hier ist ein Trendindikator)). Wenn wir uns den Algorithmus ansehen, werden wir feststellen, dass er nicht nur trivial, sondern auch unnötig und schädlich ist - er zerstört eine Reihe von Indikatorparametern. Und das System wird die Indikatoren gemeinsam verarbeiten, und zwar in optimaler Weise.

PS Unter vier Augen wurde mir gesagt, dass der Indikator dem ATR ähnelt.

In der Tat misst er auch die Volatilität, aber die Berechnungen sind anders. Das ist Volatilität, wie ich sie verstehe) und spiegelt meiner Meinung nach die Handelsaktivität besser wider.

 

Auf Anregung von jemandem hier im Forum habe ich einen Kalman-Filter implementiert. Ich wurde so gelobt, so gelobt...

Im Allgemeinen habe ich dort geschrieben, dass es unwahrscheinlich ist, dass es ein greifbares Ergebnis geben wird, aber ich habe trotzdem beschlossen, es zu überprüfen.

Ich habe eine Abbildung des MA 48 und des Kalman-Filters, der auf der Grundlage dieses MA erstellt wurde (für einen korrekten Vergleich sollten wir uns mit ein und demselben Objekt beschäftigen).

Nun, ja, sie ist etwa 1,5 Mal schneller, aber sie kann durchaus durch MA mit einer Periode von 28-30 ersetzt werden. Sie werden sich nicht vollständig überschneiden, aber es ist schwer zu sagen, was besser ist, MA oder Kalman.

Fazit: Er verursacht viel Ärger, ist aber wenig nützlich. Natürlich zu Handelszwecken. Wir sind nicht mit der Navigation beschäftigt).

 

Benötigte eine polynomiale Regression für ein Python-Modell. Vielleicht brauchen Sie es auch.

Quellcode:

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)

Grafik:

Es handelt sich nicht um ein Diagramm, sondern um zwei. Sie überlagern sich vollständig, was zu erwarten ist, da sowohl die ursprüngliche Kurve als auch die Regression Polynome vom Grad 3 sind. Der Fehler liegt in der Größenordnung von 1e-3.

 

Ein weiteres polynomiales Regressionsmodell. Ihr Fehler liegt bereits in der Größenordnung von 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)

Ich zeige die Grafik nicht, sie hat sich nicht verändert. Siehe Beitrag oben.

 

Prüfen Sie nun, ob der MA die Regressionslinie ersetzen kann. Siehe Bild.

Grün - Regressionslinie (Polynom 3. Grades), orange - MA(350).

Ich habe lange gebraucht, um sie auszuwählen, aber ich war nicht einmal in der Lage, sie genau zu treffen. Diese MA ist vielleicht eine der besten. Übrigens geht es auch um die Nützlichkeit von abstimmbaren Indikatoren).

In Zukunft werden wir vielleicht noch einige Experimente mit Regressionslinien durchführen.

 
Yuriy Asaulenko:

Auf Anregung von jemandem hier im Forum habe ich einen Kalman-Filter implementiert. Ich habe so viel Lob bekommen, so viel Lob...

- Ich mochte Pavarotti nicht, er hat einen schlechten Akzent, er trifft die Noten nicht...

- Warst du bei Pavarottis Konzert?

- Nein, sagte mir Rabinovich am Telefon.

 
TheXpert:

- Also ich mochte Pavarotti nicht, er hat einen schlechten Akzent, er trifft die Noten nicht...

- Waren Sie schon einmal in einem Pavarotti-Konzert?

- Nein, sagte mir Rabinovich am Telefon.

Wenn Sie den Kalman-Filter im Handel einsetzen wollen, kann ich Ihnen einen Artikel schicken. Es handelt sich um einen klassischen Algorithmus, ohne künstliches Denken. Aber Sie müssen es selbst programmieren. Der Artikel enthält nur Mathematik. Sie werden sich Ihre eigene Meinung bilden und sich nicht von Rabinowitz leiten lassen.)

Grund der Beschwerde: