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

 

Jetzt ist alles fertig, und es ist an der Zeit, unser Python-TS mit dem MT-Terminal zu verbinden. Dazu müssen jedoch einige Maßnahmen ergriffen werden.

Unser zukünftiger TC liest und schreibt Dateien in den Ordner C:\PyTS, aber das MT-Terminal kann aufgrund einer unbekannten Laune von MQ Dateien nur in seinem eigenen Verzeichnis lesen und schreiben - C:\<viele Buchstaben und Zahlen>\Dateien, und nicht anders. Natürlich kann man die Einstellungen im Python-Code ändern und es in den nativen MQ-Ordner wechseln lassen, aber ich brauche das Terminal, um Dateien von dort zu lesen und zu schreiben, und zwar dorthin, wo ich es will, und nicht dorthin, wo es, das Terminal, es will. Umso mehr wird dies in Zukunft notwendig sein.

Eigentlich wurde diese Frage schon vor ein paar Jahren in meinem Thema https://www.mql5.com/ru/forum/79922 gelöst .

Alles wird mit Windows-Tools gelöst. Im Terminal-Ordner C:\<viele Buchstaben und Zahlen> \Files verweist man auf den Ordner C:\PyTS, der vom Terminal (und auch vom Betriebssystem) als Unterordner Files\PyTS interpretiert wird, und das Terminal schreibt dorthin, in C:\PyTS, wie in seinen eigenen Ordner).

Dies geschieht über die Befehlszeile mit dem Windows-eigenen Dienstprogramm MKLINK. Für diejenigen, die es nicht selbst tun können, hier eine detaillierte Beschreibung:

Geben Sie Ausführen - cmd ein, oder wählen Sie aus dem Menü - Dienstprogramme-Windows -> Eingabeaufforderung. Sie erhalten ein Fenster, in das Sie MKLINK oder mklink eingeben. Hier haben wir:


Geben Sie nun mehrmals cd... ein, bis Sie zu C:\ gelangen.

Öffnen Sie dann den Windows Explorer und gehen Sie zu C:\<viele Buchstaben und Zahlen>\Dateien, wo das Terminal Dateien ablegt, und wählen Sie den Pfad zum Ordner Ctrl-Ins aus und kopieren Sie ihn.

Gehen Sie zurück zur Eingabeaufforderung und schreiben Sie dort cd <space>, fügen Sie mit Shift-Ins den Pfad zu ... ein. \Files und Enter. Wir haben es verstanden:

Jetzt schreiben wir in die Befehlszeile - mklink /D PyTS c:\PyTS , und wie üblich - Enter. Hier haben wir es:

Wir sehen, dass ein Link erstellt wurde. Wir sehen, dass es im Ordner ......\Files erschienen ist und wir greifen darauf zu - wir sehen die Dateien im Ordner C:\PyTS. )) Das war's.

Nun werden alle Dateien, die vom Terminal in den Ordner ...Files\PyTS geschrieben werden, tatsächlich in den Ordner C:\PyTS geschrieben.

.

RAM Диск.
RAM Диск.
  • 2016.04.07
  • www.mql5.com
Общее обсуждение: RAM Диск.
 
So, das war's mit der gemeinsamen Nutzung von Dateien. Alles funktioniert, alle Quellen befinden sich im Anhang. Alles andere, auch die umgekehrte Übertragung von Python nach MT, erfolgt auf die gleiche Weise und wird hoffentlich keine Probleme verursachen. Zum Ausführen lesen Sie meinen vorherigen Beitrag und führen ihn aus. Es gibt keinen anderen Weg.)

Der MQL-Code befindet sich ebenfalls im Anhang. - MQL liest den Verlauf und gibt ihn an die Python-Anwendung weiter. Python akzeptiert sie und gibt sie aus. Vergessen Sie in Python nicht, auf die Schaltfläche Start zu drücken. )

Ich hoffe, es ist nicht nötig, Kommentare zum MQL-Code zu schreiben - es gibt eine Referenz). Ja, die Datenübertragung von MT erfolgt per Timer, das ist für mich in diesem Stadium bequemer.

Wenn Sie Fragen haben, zögern Sie nicht anzurufen).

Ich werde jetzt eine Pause einlegen - jetzt müssen wir die Fragen mit der Strategie lösen. Wenn Sie Vorschläge haben - wir werden sie berücksichtigen).

Auch hier ist die gemeinsame Nutzung von Dateien ideal für die Entwicklung von Strategien und die Fehlersuche, da sie nicht verändert werden muss. Für die meisten Strategien in der Praxis ist sie dennoch geeignet. Aber bei Bedarf können wir sie jederzeit durch etwas anderes ersetzen, ohne dass das Programm wesentlich geändert werden muss - eine Sache von 1-2 Tagen.

Dateien:
PyTS.zip  4 kb
PyTSMT.mq5  7 kb
 

Ich verspreche nicht, dass ich oft schreibe, sondern nur, wenn ich dazu komme. Das Projekt wird im Hintergrund, ohne Hektik, in meiner Freizeit durchgeführt.

Ich dachte, es wäre gut, wenn das System Diagramme anzeigen würde.

Im Allgemeinen ist Python eine einfache Sprache - ein paar Tage zum Lernen reichen aus. Aber mit Modulen umzugehen, ist viel schwieriger - es gibt Tausende von ihnen, und es ist nicht immer klar, wer was macht und warum. Bei den Grafiken war es so, dass ich lange Zeit damit zurechtkommen musste. Aber das Ergebnis ist wie folgt:

Das Programm liest eine CSV-Datei und zeichnet ein Diagramm.

Das Diagramm zeigt die Preise nach Close, etwa 50 Tausend Candlesticks.

Klicken Sie auf die Lupe und markieren Sie ein Rechteck im Diagrammbereich wie hier:

können Sie das Diagramm vergrößern, und Sie werden es sehen:

Dies kann wiederholt werden. Das Diagramm kann auch verschoben und als Bild gespeichert werden, und natürlich auf den ganzen Bildschirm erweitert werden.

Alle Dateien, die Sie benötigen, sind in der Anwendung enthalten. Entpacken Sie die ZIP-Datei in einen Ordner und führen Sie CSVGraph.py aus.

Bevor Sie es ausführen, sollten Sie überprüfen, ob die Module, die Sie importieren möchten, installiert sind.

Dateien:
CSVGraph.zip  582 kb
 
Vielleicht als eine Übung in Python. Aber aus praktischer Sicht ist es wenig nützlich und eine Zeitverschwendung. Natürlich hat jeder seinen eigenen Weg. Viel Glück!
 

Überlassen wir die Albernheiten den Nachbarn und dem Amateur-Sondierungsgremium, aber fassen wir die vorläufigen Ergebnisse selbst zusammen.

Wenn Sie bereits mit dem Thema vertraut sind Wenn Sie ein Profi sind, kennen Sie sich bereits mit Python aus, wissen, wie Sie mit CSV-Dateien arbeiten, Diagramme erstellen und Daten mit dem Terminal austauschen können. Das reicht bereits aus, um Handelsstrategien zu entwickeln, zu simulieren und zu testen. Wenn Ihre Strategie mit TF 1 min und länger arbeitet, ohne Ticks zu verwenden, und in Intervallen von 5-10 Sekunden auf das Terminal zugreift, können Sie bereits funktionierende Strategien direkt in Phyton erstellen und nur die Lieferung der Daten und die "Ausführung" Ihrer Aufträge dem Terminal überlassen.

Außerdem kennen Sie sich bereits mit der Programmierung und der Phyton-Umgebung aus, und zwar auf einem Niveau, das über die Sprache und Umgebung R hinausgeht, die bei den lokalen Apologeten des maschinellen Lernens so beliebt ist. Sie werden bereits in der Lage sein, selbst sehr komplexe Indikatorstrategien in Python zu erstellen, aber alle Funktionen von Python können (ähnlich wie in R) durch Module implementiert werden. In diesem Thema haben wir nur 3 Module verwendet - tkinter, numpy und matplotlib.

Was Python nun braucht, um fortschrittlichere Strategien zu entwickeln, z. B. mit maschinellem Lernen. Hierfür kann das Modul -scikit-learn verwendet werden. Mit der Verwendung vonscikit-learn werden die folgenden Funktionen verfügbar - Benutzerhandbuch. Wie gefällt Ihnen das Methodenpaket? - Es enthält bereits so ziemlich alles, was in R und im Bereich des maschinellen Lernens nicht unbekannt ist, von der Bayes'schen Klassifikation bis zu Zufallswäldern und neuronalen Netzen.

Dies ist nur eines der Module für maschinelles Lernen in Python, von denen es etwa ein Dutzend gibt. Das Modulscikit-learn soll nicht das beste und auch nicht das fortschrittlichste sein. Das hängt davon ab, wer was braucht. Die anderen sind nicht schwer im Internet zu finden.


PS Für diejenigen, die mit Python anfangen oder gerade erst anfangen.

Ich habe mehrere Python-Entwicklungsumgebungen ausprobiert und bin bei der für Anfänger (zu denen auch ich gehöre) am besten geeigneten stehen geblieben - Anaconda. Das Praktische daran ist, dass alles, was ich brauche, bereits installiert ist, einschließlich Python. Editor Ich benutze Spyder - mitAnaconda installiert. Ich rate Ihnen auch, Editor VSCode zu installieren - auch sehr schön und direkt vonAnaconda installiert.

Vielleicht sind Sie mit meiner Wahl nicht zufrieden.

 
Nach 4 Seiten des Themas sind wir endlich bereit, zu dem überzugehen, was gesagt wurde - Strategien in Python. Dafür ist bereits alles getan.
Wir beginnen mit einer einfachen Strategie - dem Handel auf Basis des EMA-Crossing, eventuell mit Modifikationen.
Als ich die neuronalen Netze (NS) beherrschte, begann ich mit einer einfachen Aufgabe - das NS sollte Punkte der EMA-Kreuzung identifizieren. Die Aufgabe ist aus praktischer Sicht absolut nutzlos, aber sie ermöglichte es uns, herauszufinden, wie der NS mit Marktdaten gefüttert und aufbereitet werden kann, und löste viele Probleme bei der Ausbildung.
Unsere Aufgabe ist es nun, überhaupt keinen Gewinn zu machen und nicht einmal mit dem Terminal zu kommunizieren - das ist einfach, aber ohne eine gewinnbringende Strategie ist es sinnlos. Unsere Aufgabe besteht nun darin, eine Strategievorlage zu erstellen und zu lernen, wie man sie testet, wobei jede Strategie geeignet ist. Dann fügen Sie eine beliebige Strategie in die Vorlage ein und testen sie, und wenn sie funktioniert, können wir den Handel über das Terminal beginnen.

Die erforderlichen Indikatoren sind alle bereit. Siehe die in Python erstellte Abbildung (in Python ist es sehr bequem und schnell, alle Arten von Diagrammen zu zeichnen). Dies ist die Reaktion auf einen einzelnen Sprung - 1(t), oder eine transiente Funktion. Es handelt sich um einen der Standardtests.


fm ist der herkömmliche gleitende Durchschnitt (der nur zur Kalibrierung dient), f1 ist der EMA mit einer modifizierten Koeffizientenberechnung und f2 ist ein nicht standardisierter Indikator.

Aber, wie unser gemeinsamer Bekannter zu sagen pflegte:

Igor Makanu:

Ich habe es schon eine Million Mal gesagt, und ich werde es wahrscheinlich wieder sagen... Niemand hat etwas Besseres erfunden als Indikatoren aus dem MT-Angebot (Standard... sozusagen alte slawische Indikatoren... heidnisch!!!).

Um Ihren Kopf nicht mit Wissenschaft zu verwirren, werden Sie die Standardquellen für EMA und Strategie erhalten. Ich werde die Strategie jedoch anhand meiner Indikatoren erstellen und testen. Vielleicht werde ich etwas anderes vor neugierigen Blicken verbergen, aber ohne Verlust an Funktionalität.

Aber es geht nicht nur um die EMA-Überquerung. Das Ziel all dieser Maßnahmen sind Strategien für das maschinelle Lernen. Bislang habe ich verschiedene Klassifizierungsmethoden getestet. Und hier sind die Testergebnisse:

Gaussian, RBF SVM, Neuronale Netze und naive Bayes'sche Klassifikation stehen bisher an der Spitze. Das Python-Programm ist bereits fertig und irgendwo im Internet verfügbar, aber die Datenaufbereitung ist Sache des Benutzers.

Los geht's.

 
Yuriy Asaulenko:
Nach 4 Seiten des Themas sind wir endlich bereit, zu dem überzugehen, was gesagt wurde - Strategien in Python. Hierfür ist bereits alles getan.
Wir beginnen mit einer einfachen Strategie - dem Handel auf Basis des EMA-Crossing, eventuell mit Modifikationen.
Als ich die neuronalen Netze (NS) beherrschte, begann ich mit einer einfachen Aufgabe - das NS sollte Punkte der EMA-Kreuzung identifizieren. Die Aufgabe ist aus praktischer Sicht absolut nutzlos, aber sie ermöglichte es uns, herauszufinden, wie wir den NS mit Marktdaten füttern, wie wir sie aufbereiten und viele Schulungsprobleme lösen können.
Unsere Aufgabe ist es nun, überhaupt keinen Gewinn zu machen und nicht einmal mit dem Terminal zu kommunizieren - das ist einfach, aber ohne eine gewinnbringende Strategie ist es sinnlos. Unsere Aufgabe besteht nun darin, eine Strategievorlage zu erstellen und zu lernen, wie man sie testet, wobei jede Strategie geeignet ist. Dann fügen Sie eine beliebige Strategie in die Vorlage ein und testen sie, und wenn sie funktioniert, können wir den Handel über das Terminal beginnen.

Die erforderlichen Indikatoren sind alle bereit. Siehe die in Python erstellte Abbildung (in Python ist es sehr bequem und schnell, alle Arten von Diagrammen zu zeichnen). Dies ist die Reaktion auf einen einzelnen Sprung - 1(t), oder eine transiente Funktion. Es handelt sich um einen der Standardtests.


fm ist der herkömmliche gleitende Durchschnitt (der nur zur Kalibrierung dient), f1 ist der EMA mit einer modifizierten Koeffizientenberechnung und f2 ist ein nicht standardisierter Indikator.

Aber, wie unser gemeinsamer Bekannter zu sagen pflegte:

Um zu vermeiden, dass Sie sich den Kopf über die Wissenschaft zerbrechen, werden Sie die Standard-EMA und die Quellen der Strategie erhalten. Ich werde die Strategie jedoch anhand meiner Indikatoren erstellen und testen. Vielleicht werde ich etwas anderes vor neugierigen Blicken verbergen, aber ohne Verlust an Funktionalität.

Aber es geht hier nicht um die EMA-Überquerung. Das Ziel all dieser Maßnahmen sind Strategien für das maschinelle Lernen. Bislang habe ich verschiedene Klassifizierungsmethoden getestet. Und hier sind die Testergebnisse:

Gaussian, RBF SVM, Neuronale Netze und naive Bayes'sche Klassifikation stehen bisher an der Spitze. Das Python-Programm ist bereits fertig und irgendwo im Internet verfügbar, aber die Datenaufbereitung ist Sache des Benutzers.

Los geht's.


Es ist eine Schande, dass sie auf neuronale Netze umgestiegen sind. Aber meistens sehr nützlich, ich denke, es wird sich als nützlich erweisen.

Forum für Handel, automatisierte Handelssysteme und Strategietests

Maschinell lernende Roboter

Yuriy Asaulenko, 2018.09.21 00:45

Das werden sie nicht. Das Maximum, das sie tun werden, ist dasselbe wie zuvor.


 
Sergey Chalyshev:


Es ist schade, dass sie auf neuronale Netze umgestiegen sind. Aber meistens sehr nützlich, ich denke, es wird sich als nützlich erweisen.

Es gibt keine Pläne für einen Wechsel zu NS und anderen MoD-Methoden in diesem Thread. Zumindest im Moment). Wir werden sehen.

Es handelt sich hierbei um eine Python-Systemvorlage. Das spezifische Ausfüllen dieser Vorlage ist Sache des jeweiligen Benutzers.

Nun, und die Fähigkeiten der Python-Bibliotheken zu zeigen, ist meiner Meinung nach nicht überflüssig.

 
PS Ja, ich habe nicht gesagt, dass ich alle Strategien für FORTS (MOEX) machen werde. Ich spiele nicht mit Forex-OCs.
 
Lassen Sie uns mit unseren Spielen weitermachen. Ab heute sind wir bereit und funktionsfähig:
2. die Strategievorlage.
3. Eine einfache EMA-Crossing-Strategie ist in der Vorlage enthalten.

Wenn das Programm gestartet wird, wird die Strategie getestet, der Bericht aller Trades wird in einer CSV-Datei gespeichert, die Gewinnkurve wird auf der Konsole angezeigt, die auf der Festplatte gespeichert werden kann - siehe Abb.


Der Test wurde mit SBER MOEX-Futures, 3M-Intervall, 1M-Zeitrahmen, insgesamt ~55000 Kerzen durchgeführt. In der Strategie wurden nur geschlossene Candlesticks verwendet. Die Testdauer beträgt ~1 Minute, beginnend mit dem Programmstart. Das ist etwa 1 ms pro Kerze.
Ein Ordner mit allen notwendigen Programmdateien, einschließlich der Historie für SBER-Futures, ist beigefügt.
Um das Programm zu starten, führen Sie die Datei main.py aus. Vergewissern Sie sich vor der Ausführung, dass Ihr Python alle erforderlichen Pakete und Module installiert hat. Wenn Sie mit Anaconda arbeiten, sind alle notwendigen Pakete und Module bereits installiert.
Schreiben Sie Ihre Strategie in die Vorlage, und testen Sie sie.
Nun, wie stelle ich mir die Anwendung dieser Technologie vor.
Es wurde beschlossen, auf Python-Plattform bewährte Strategie, die neuronale Netze verwendet, vielleicht mit einem kleinen Upgrade zu übersetzen. Damit wird es mit minimalem Aufwand möglich sein, die Anwendung der in Python verfügbaren ML-Technologien zu beherrschen, das System an das Terminal anzuschließen und direkt in Betrieb zu nehmen. Für mich ist die Haupthandelsplattform MOEX, und Forex ist ein Hilfsmittel, so dass in absehbarer Zukunft die Verbindung des Systems mit dem MT-Terminal nicht geplant ist, obwohl es zu Beginn des Themas als eine Option zum Testen angenommen wurde.
Es gibt aber genügend Spezialisten im Forum, die das, wenn sie wollen, auch machen können. Außerdem ist die C-API Python viel einfacher als die C-API desselben R, mit der lokale Spezialisten erfolgreich zurechtgekommen sind.
Wir können davon ausgehen, dass die Ziele des Themas vollständig erfüllt sind.
Dateien:
Public.zip  683 kb