Wie man eine Handelsstrategie auf der FMZ Quant Plattform schreibt
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.
Zunächst öffnen Sie die offizielle Website des FMZ Quant, melden Sie sich bei Ihrem Konto an. Klicken Sie auf
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.
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.
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
Der letzte Schritt besteht darin, Aufträge zu platzieren, Sie müssen nur die FMZ Quant
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
Bitte beachten Sie, dass
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.
Versuchen Sie, die in diesem Abschnitt beschriebenen Strategien selbst umzusetzen.
Auf der Grundlage der Strategie in diesem Abschnitt wird die Stop-Loss- und Take-Profit-Funktion hinzugefügt.
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.