2.4 Wie schreibt man eine Handelsstrategie auf der FMZ Quant-Plattform?

Schriftsteller:Gutes, Erstellt: 2019-06-25 12:04:22, Aktualisiert: 2023-11-13 19:50:01

img

Wie man eine Handelsstrategie auf der FMZ Quant Plattform schreibt

Zusammenfassung

Nach dem Studium der vorherigen Abschnitte sind wir endlich bereit, eine quantitative Handelsstrategie zu schreiben. Dies wird der wichtigste Schritt bei Ihrem Eintritt in den quantitativen Handel aus manuellem Handel sein. In der Tat ist es nicht so geheimnisvoll. Das Schreiben einer Strategie ist nichts anderes als die Verwirklichung Ihrer Ideen mit Code. Dieser Abschnitt wird eine quantitative Handelsstrategie von Grund auf umsetzen, nach dem Studium wird jeder mit dem Schreiben von Strategien auf dem FMZ Quant-System vertraut sein.

Ich bin bereit.

Zunächst öffnen Sie die offizielle Website des FMZ Quant, melden Sie sich bei Ihrem Konto an. Klicken Sie auf DashboardstrategyAdd Strategy. Bitte beachten Sie, dass Sie vor Beginn des Schreibens des Codes die Programmiersprachen auswählen müssen. In diesem Abschnitt werden wir JavaScript verwenden. Wählen Sie es aus dem Dropdown-Menü. Außerdem unterstützt die FMZ Quant-Plattform auch Python, C++ und Visual Programming.

Strategie-Idee

Im vorherigen Kapitel habe ich eine gleitende Durchschnittsstrategie eingeführt. Das heißt: Wenn der Preis höher ist als der Durchschnittspreis der letzten 10 Tage, öffnen Sie eine Long-Position. Wenn der Preis niedriger ist als der Durchschnittspreis der letzten 10 Tage, kaufen Sie ihn. Obwohl der Preis jedoch den Marktstatus direkt widerspiegeln kann, wird es immer noch viele falsche Durchbruchssignale geben; Daher müssen wir diese Strategie aktualisieren und verbessern.

Zunächst wählen wir einen größeren gleitenden Durchschnitt aus, um die Trendrichtung zu beurteilen. Mindestens die Hälfte der falschen Durchbruchssignale wurden gefiltert. Der große gleitende Durchschnitt ist langsam, aber er wird stabiler sein. Dann fügen wir eine weitere Bedingung hinzu, um die Erfolgsrate der Eröffnungsposition zu erhöhen. Dieser große gleitende Durchschnitt ist mindestens nach oben; schließlich wird die relative Positionsbeziehung zwischen Preis, kurzfristiger gleitender Durchschnitt und langfristiger gleitender Durchschnitt verwendet, um eine vollständige Handelsstrategie zu bilden.

img

Strategie Logik

Mit den oben genannten Strategie-Ideen können wir versuchen, diese Strategie-Logik aufzubauen. Die Logik hier ist nicht, dass Sie das Gesetz der himmlischen Bewegung berechnen lassen, es ist nicht so kompliziert. Es ist nichts anderes als die vorherigen Strategie-Ideen in Worte zu drücken.

  • Offene lange Position: Wenn derzeit keine Position besteht und der Schlusskurs größer ist als der kurzfristige gleitende Durchschnitt und der Schlusskurs größer ist als der langfristige gleitende Durchschnitt und der kurzfristige gleitende Durchschnitt größer ist als der langfristige gleitende Durchschnitt und der langfristige gleitende Durchschnitt steigt.

  • Offene Leerposition: Wenn derzeit keine Position besteht und der Schlusskurs unter dem kurzfristigen gleitenden Durchschnitt liegt und der Schlusskurs unter dem langfristigen gleitenden Durchschnitt liegt und der kurzfristige gleitende Durchschnitt unter dem langfristigen gleitenden Durchschnitt liegt und der langfristige gleitende Durchschnitt sinkt.

  • Schließen einer Long-Position: Wenn Sie derzeit eine Long-Position halten und der Schlusskurs unter dem langfristigen gleitenden Durchschnitt liegt oder der kurzfristige gleitende Durchschnitt unter dem langfristigen gleitenden Durchschnitt liegt oder der langfristige gleitende Durchschnitt sinkt.

  • Schließung einer Kurzposition: Wenn die aktuelle Kurzposition gehalten wird und der Schlusskurs höher ist als der langfristige gleitende Durchschnitt oder der kurzfristige gleitende Durchschnitt höher ist als der langfristige gleitende Durchschnitt oder der langfristige gleitende Durchschnitt steigt.

Das ist die Logik der gesamten Strategie, wenn wir die Textversion dieser Strategie in Code umwandeln, wird sie umfassen: den Erwerb der Marktquote, die Berechnung von Indikatoren, das Platzieren von Aufträgen zur Eröffnung und Schließung von Positionen, diese drei Schritte.

M Sprachstrategie

Die erste Sache ist, das Marktangebot zu erhalten. In dieser Strategie müssen wir nur den Schlusskurs erhalten. In der M-Sprache ist die API, um den Schlusskurs zu erhalten: CLOSE, was bedeutet, dass Sie nur CLOSE im Codierungsbereich schreiben müssen, um den neuesten K-Zeilenschlusskurs zu erhalten.

Als nächstes berechnen wir den Indikator. In dieser Strategie verwenden wir zwei Indikatoren, nämlich: kurzfristigen gleitenden Durchschnitt und langfristigen gleitenden Durchschnitt. Wir gehen davon aus, dass der kurzfristige gleitende Durchschnitt der 10-Perioden-gleitende Durchschnitt ist und der langfristige gleitende Durchschnitt der 50-Perioden-gleitende Durchschnitt. Wie verwenden Sie den Code, um diese beiden darzustellen? Siehe unten:

MA10:=MA(CLOSE,10); // Get the 10-cycle moving average of the latest K-line and save the result in variable MA10
MA50:=MA(CLOSE,50); // Get the 50-cycle moving average of the latest K-line and save the result in variable MA50

Im manuellen Handel können wir auf einen Blick sehen, ob der gleitende Durchschnitt von 50 Perioden steigt oder fällt, aber wie drücken wir ihn in Code aus? Denken Sie sorgfältig nach, um zu beurteilen, ob der gleitende Durchschnitt steigt oder nicht, ist der aktuelle gleitende Durchschnitt der K-Linie größer als der gleitende Durchschnitt der vorherigen K-Linie? oder ist er höher als zwei vorherige K-Linien? Wenn die Antwort ja ist, dann können wir sagen, dass der gleitende Durchschnitt rasend ist. Wir können auch den Fall nach der gleichen Methode beurteilen.

MA10:=MA(CLOSE,10); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10
MA50:=MA(CLOSE,50); //Get the 50-cycle moving average of the latest K line and save the result to variable MA10

MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling

Beachten Sie, dass in den Zeilen 8 und 9 des obigen Codes das Wort AND Logische Operatoren ist. Das bedeutet, wenn beide Seiten der Bedingung and wahr sind, ist der gesamte Satz wahr, andernfalls ist er falsch. (wenn nur eine Seite der Bedingung wahr ist, ist sie als Ganzes immer noch falsch). Übersetzen Sie es ins Englische: Wenn der 50-Perioden- gleitende Durchschnitt der aktuellen K-Linie größer ist als der 50-Perioden-gleitende Durchschnitt der vorherigen K-Linie, und der 50-Perioden-gleitende Durchschnitt der durchläufigen K-Linie größer ist als die K-Linie vor ihr 50-Perioden-gleitende Durchschnitt K-Linie, dann berechnen Sie den Wert als yes; andernfalls berechnen Sie den Wert als no und geben Sie das Ergebnis zu MA50_ISUP.

Der letzte Schritt besteht darin, Aufträge zu platzieren, Sie müssen nur die FMZ Quants Order API anrufen, um die Kauf- und Verkaufsoperation nach dem Logikcode auszuführen.

MA10:=MA(CLOSE,10); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10
MA50:=MA(CLOSE,50); //Get the 50-cycle moving average of the latest K line and save the result to variable MA10

MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling

CLOSE>MA10 AND CLOSE>MA50 AND MA10>MA50 AND MA50_ISUP,BK; //open long position
CLOSE<MA10 AND CLOSE<MA50 AND MA10<MA50 AND MA50_ISUP,SK; //open short position
CLOSE<MA50 OR MA10<MA50,SP;//close long position
CLOSE>MA50 OR MA10>MA50,BP;//close short position

Beachten Sie, dass die Zeile 13 und 14 des obigen, das Wort OR, die ein weiterer logischer Operator ist, in der M-Sprache bedeutet or, übersetzen Sie es ins Englische: wenn der aktuelle K-Linies Schlusskurs kleiner ist als der aktuelle K-Linies 50-Perioden gleitender Durchschnitt, oder der aktuelle K-Linie 10-Perioden gleitender Durchschnitt kleiner ist als der aktuelle K-Linie 50-Perioden gleitender Durchschnitt, wird der Wert als Yes berechnet. Und platzieren Sie die Bestellung sofort; andernfalls ist die Berechnung no und tun Sie nichts.

Bitte beachten Sie, dass AND und OR alle logischen Operatoren in der M-Sprache sind:

  • AND ist, wenn alle Bedingungen ja und die letzte Bedingung ja sind;

  • OR ist, wenn solange eine der Bedingungen yes ist, die letzte Bedingung yes ist.

Zusammenfassend

Das oben beschriebene ist der gesamte Prozess des Schreibens einer Handelsstrategie auf der FMZ Quant-Plattform mithilfe der M-Programmiersprache. Es gibt insgesamt drei Schritte: von einer Strategieidee über das Strategiedenken und die Verwendung von Text zur Beschreibung der Logik bis hin zur Umsetzung einer vollständigen Handelsstrategie mit Code. Obwohl dies eine einfache Strategie ist, ist der spezifische Implementierungsprozess der komplexen Strategie ähnlich, außer dass die Strategie und die Datenstruktur der Strategie unterschiedlich sind. Solange Sie den quantitativen Strategieprozess in diesem Abschnitt verstehen, können Sie quantitative Strategieforschung und Praxis auf der FMZ Quant-Plattform durchführen.

Nachschulübungen

  1. Versuchen Sie, die in diesem Abschnitt beschriebenen Strategien selbst umzusetzen.

  2. Auf der Grundlage der Strategie in diesem Abschnitt wird die Stop-Loss- und Take-Profit-Funktion hinzugefügt.

Ankündigung zum nächsten Abschnitt

Bei der Entwicklung von quantitativen Handelsstrategien sind Programmiersprachen wie Waffen, eine gute Programmiersprache kann Ihnen helfen, mit der Hälfte des Aufwands das Doppelte des Ergebnisses zu erzielen. Zum Beispiel gibt es mehr als ein Dutzend der am häufigsten verwendeten Sprachen Python, C ++, Java, C #, EasyLanguage und M in der quantitativen Handelswelt. Welche Waffe sollten Sie wählen, um auf dem Schlachtfeld zu kämpfen? Im nächsten Abschnitt werden wir diese gängigen Programmiersprachen sowie die Eigenschaften jeder Programmiersprache selbst vorstellen.


Verwandt

Mehr