3.2 Einstieg in die M-Sprache

Schriftsteller:Gutes, Erstellt: 2019-04-19 14:18:38, aktualisiert: 2019-04-27 11:54:30

Zusammenfassung

Was ist die M-Sprache? Die sogenannte M-Sprache ist eine Reihe von programmatischen Funktionen, die sich von den frühen technischen Indikatoren des Aktienhandels erstrecken.

img

Es verwendet den Konstruktionsmodus "kleine Grammatik, große Funktion", was die Programmiereffizienz erheblich verbessert. Das Strategie-Schreiben von mehr als 100 Sätzen in anderen Sprachen kann mit nur wenigen Zeilen in M-Sprachen kompiliert werden. Die Finanzstatistik-Funktionsbibliothek und Datenstruktur in Verbindung mit dem FMZ Quant-Tool können auch einige komplexe Handelslogik unterstützen.

Vollständige Strategie

Um Ihnen zu helfen, das Schlüsselwissen dieses Abschnitts schnell zu verstehen, lassen Sie uns vor der Einführung der FMZ Quant M-Sprache zunächst ein vorläufiges Verständnis des Substantivkonzepts dieses Abschnitts haben. Wir werden dennoch den langfristigen gleitenden 50-Tage-Durchschnitt und den kurzfristigen gleitenden 10-Tage-Durchschnitt als Basisfall verwenden und den vollständigen Strategiefall überprüfen, der im vorherigen Kapitel erwähnt wurde:

  • 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.

Wenn man es in M-Sprache schreibt, heißt es:

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


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

Um eine vollständige Handelsstrategie zu schreiben, benötigen Sie: Datenerfassung, Datenberechnung, Logikberechnung und Auftragserteilung. Wie oben gezeigt, wird in dem gesamten Code nur eine API zum Erhalten der Basisdaten verwendet, die in der ersten und zweiten Zeile " CLOSE " ist.

Beachten Sie, dass die MA10, MA50, MA10_1, MA50_1, MA10_2 und MA50_2 Variablen sind; in den ersten bis neunten Zeilen ist das " := " ein Zuweisungszeichen, und die Daten rechts vom Zuweisungszeichen werden der Variablen links vom Zuweisungszeichen zugeordnet; das MA ist die API, zum Beispiel in der ersten Zeile muss MA (der gleitende Durchschnitt) in zwei Parameter übergeben werden.

Grunddaten

Die Basisdaten (Öffnungspreis, Höchstpreis, Tiefpreis, Schlusskurs, Volumen) sind ein unverzichtbarer Bestandteil des quantitativen Handels. Um die neuesten Basisdaten in der Strategie zu erhalten, müssen Sie nur die API des FMZ Quant aufrufen. Wenn Sie die Basisdaten des historischen Preises erhalten möchten, können Sie "REF" verwenden, z. B.: REF (CLOSE, 1) ist, um den Schlusskurs von gestern zu erhalten.

Variable

Variablen können geändert werden. Der Name einer Variablen kann als Codename verstanden werden. Ihr Name wird durch englische Buchstaben, Zahlen und Zeilen unterstützt. Die Länge muss jedoch innerhalb von 31 Zeichen kontrolliert werden. Variablenamen können nicht mit einem anderen wiederholt werden, können nicht mit Parameternamen dupliziert werden, können nicht mit Funktionsnamen (API ) wiederholt werden und jede Anweisung sollte mit einem Semikolon enden. Kommentare nach dem " // " schreiben. Wie unten gezeigt:

INT:=2; //Integer type
FLOAT:=3.1; //Floating point
ISTRUE:=CLOSE>OPEN; //Boolean type

Variable Zuordnung

Die Variablenzuweisung bedeutet, dass der Wert rechts vom Zuweisungszeichen der Variablen auf der linken Seite gegeben wird. Es gibt vier Arten von Zuweisungen, die steuern können, ob der Wert auf dem Diagramm oder der Position des Displays angezeigt wird. Sie sind " : ", " := ", " ^^ ", "... ", und die unten stehenden Code-Kommentare erklären ihre Bedeutung detailliert.

CC1: C; //Assign the closing price to the variable CC1 and display it in the sub-chart
CC2:=C; //Assign the closing price to variable CC2, but not display in the status bar and chart
CC3^^C; //Assign the closing price to the variable CC3 and display it in the main chart
CC4..0; //Assign the closing price to the variable CC4 and display it in the status bar, but not in the chart

Art der Daten

Es gibt mehrere Datentypen in der M-Sprache, von denen die häufigsten numerische Typen, String-Typen und Boole-Typen sind. Der numerische Typ sind Zahlen, einschließlich ganzzahlender Zahlen, Dezimalzahlen, positiver und negativer Zahlen usw., wie z. B.: 1, 2, 3, 1, 1234, 2.23456...; String-Typ kann als Text verstanden werden, Chinesisch, Englisch, Zahlen können auch Zeichenfolgen sein, wie z. B.: the FMZ Quant, CLOSEPRICE, 6000, der Zeichenfolge-Typ muss mit doppelten Anführungszeichen umwickelt werden; der Boole-Typ ist der einfachste, er hat nur zwei Werte von yes und No, wie: 1 mit den Repräsentanten wahr bedeutet yes und 0 für falsch zeigt no an.

Relationaler Operator

Relationale Operatoren, wie der Name schon sagt, sind Operatoren, die verwendet werden, um die Beziehung zwischen zwei Werten zu vergleichen.

CLOSE = OPEN; //when closing price equals to opening price, return 1 (true), otherwise return 0 (false)
CLOSE > OPEN; //when closing price greater than opening price, return 1 (true), otherwise return 0 (false)
CLOSE < OPEN; //when closing price less than opening price, return 1 (true), otherwise return 0 (false)
CLOSE >= OPEN; //when closing price greater than or equal to opening price, return 1 (true), otherwise return 0 (false)
CLOSE <= OPEN; //when closing price less than or equal to opening price, return 1 (true), otherwise return 0 (false)
CLOSE <> OPEN; //when closing price is not equal to opening price, return 1 (true), otherwise return 0 (false)

Logische Operatoren

Logische Operationen können separate Aussagen des Boolean-Typs in das Ganze einbinden, die am häufigsten verwendet werden, sind "AND" und "OR". Angenommen, es gibt zwei Boolean-Typ-Werte, Schließpreis ist größer als Eröffnungspreis und Schließpreis ist größer als gleitender Durchschnitt, können wir sie in einen Boolean-Wert gruppieren, zum Beispiel: Der Schließpreis ist größer als der Eröffnungspreis und (AND) Schließpreis ist größer als der gleitende Durchschnitt , der Schließpreis ist größer als der Eröffnungspreis oder (OR) Schließpreis ist größer als der gleitende Durchschnitt.

AA:=2>1; //return true
BB:=4>3; //return true
CC:=6>5; //return true
DD:=1>2; //return false

Bitte beachten Sie:

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

  • "ODER" bedeutet unter allen Bedingungen, solange eine der Bedingungen true ist, ist die letzte Bedingung true.

  • "AND" kann als "&&" geschrieben werden, und "OR" kann als "しょう" geschrieben werden.

Arithmetischer Operator

Es gibt keinen Unterschied zwischen den in M-Sprachen verwendeten arithmetischen Operatoren (" + , " - , " * , " / ) und der Mathematik des regulären Schulunterrichts, wie unten gezeigt:

AA:=1+1; //the result is 2
BB:=2-1; //the result is 1
CC:=2*1; //the result is 2
DD:=2/1; //the result is 2

Priorität

Wenn es einen 100*(10-1)/(10+5) Ausdruck gibt, welchen Schritt berechnet das Programm zuerst?

1, Wenn es sich um die gleiche Betriebsstufe handelt, wird sie in der Regel von links nach rechts berechnet. 2, Wenn es Additionen und Subtraktionen, und Multiplikation und Division gibt, berechnen Sie zuerst die Multiplikation und Division, dann Additionen und Subtraktionen. 3, Wenn Klammern vorhanden sind, berechnen Sie zunächst die Innenseite der Klammern. 4, Wenn das Gesetz der einfachen Bedienung erfüllt ist, kann das Gesetz für die Berechnung verwendet werden.

Das gleiche gilt für die M-Sprache, wie unten gezeigt:

100*(10-1)/(10+5)  //the result is 60
1>2 AND (2>3 OR 3<5)  //the result is false
1>2 AND 2>3 OR 3<5  //the result is true

Ausführungsart

In der M-Sprache des FMZ Quant-Tools gibt es zwei Ausführungsmodi, nämlich den Schlusskursmodus und den Echtzeitpreismodus. Der Schlusskursmodus bedeutet, dass, wenn das aktuelle K-Liniensignal festgelegt wird, die Bestellung auf die nächste K-Line gelegt wird. der Echtzeitmodus wird sofort ausgeführt, wenn das aktuelle K-Liniensignal festgelegt wird.

Intraday-Strategie

Wenn es sich um eine Intraday-Handelsstrategie handelt, müssen Sie die Zeitfunktion "TIME" verwenden, wenn Sie die Position am Ende schließen müssen. Diese Funktion ist über dem zweiten Zyklus und unter dem Tageszyklus, in Form von vier Ziffern angezeigt: HHMM (1450 - 14: 50).

CLOSE>OPEN && TIME<1450,BK; //if it is a positive k-line and the time is less than 14:50, opening position.
TIME>=1450,CLOSEOUT; //if the time is beyond 14:50, closing all position.

Klassifizierung des Modells

Es gibt zwei Arten von Modellklassifizierung in der M-Sprache: Nichtfilterendes Modell und Filterendes Modell. Dies ist eigentlich sehr gut verstanden: Das nichtfilternde Modell ermöglicht kontinuierliche Öffnungs- oder Schließsignale, mit denen Positionen hinzugefügt und reduziert werden können. Das Filterendes Modell erlaubt keine kontinuierlichen Öffnungs- oder Schließsignale, dh wenn das Öffnungssignal erscheint, wird das nachfolgende Öffnungssignal gefiltert, bis das Schließsignal erscheint. Die Reihenfolge des nichtfilternden Modells ist: offene Position - schließende Position - offene Position - schließende Position - offene Position...

img

Zusammenfassend

Wenn Sie eine komplexere schreiben müssen, können Sie sich auf die M-Sprache-API-Dokumentation der FMZ Quant-Plattform beziehen oder direkt den offiziellen Kundenservice konsultieren, um sie für Sie zu schreiben.

Ankündigung zum nächsten Abschnitt

Der Intraday-Handel ist auch ein beliebter Handelsmodus. Diese Methode hält keine Position über Nacht. Daher unterliegt sie einem geringen Risiko für Marktvolatilität. Sobald ungünstige Marktbedingungen auftreten, kann sie rechtzeitig angepasst werden. Im nächsten Abschnitt bringen wir Sie dazu, eine praktikable Intraday-Handelsstrategie zu schreiben.

Nachschulübungen

  1. Versuchen Sie, das FMZ Quant-Tool zu verwenden, um das Basisdatum von API per M-Sprache zu erhalten.
  2. Wie viele Anzeigemethoden für Variablenzuweisungen gibt es in der Tabelle?

Mehr