Stanley Kroll erwähnte in seinem Buch
Die Strategie, die in diesem Artikel geteilt wird, basiert auf diesem Prinzip. Die gleitende Durchschnittslinie wird als Richtung des Trends verwendet. Das Verhältnis zwischen dem Schlusskurs, dem höchsten Preis und dem niedrigsten Preis wird als Signal zur Eröffnung der Position verwendet. Unter der Prämisse, dass sich der Kurstrend nicht signifikant geändert hat, proaktiv Profit in Chargen nach dem Prozentsatz zu machen.
Es gibt ein altes Sprichwort in der Handelswelt:
Einfach ausgedrückt, sind Schließpositionen nichts anderes als zwei Situationen: Gewinn und Stop-Loss. Zum Beispiel, wenn Sie Glück haben, beginnt der Preis nach dem Kauf zu steigen. Zu diesem Zeitpunkt müssen Sie das Problem des Gewinns berücksichtigen. Andernfalls können wir nur Geld auf dem
Aus statistischer Sicht werden die meisten Verlustpositionen auf dem Futures-Markt zum Kostenpreis zurückkehren. Wenn Sie jedoch auf eine kleine Wahrscheinlichkeit eines großen umgekehrten Trends stoßen, können Sie alle vorherigen Gewinne oder sogar den gesamten Fonds verlieren. Daher können wir für unsere Einzelhändler große Gewinne erzielen; wir können kleine Gewinne erzielen; wir können kleine Verluste vornehmen, aber wir können nie großes Geld verlieren. Kurz gesagt: Stop-Loss hält Sie am Leben und Gewinn machen Sie besser leben.
Manchmal, wenn wir intuitiv Gewinn machen, kann es eine große Welle der Marktpreisbewegung geben, dass wir nur eine kleine Menge davon verdienen. Obwohl es keine gescheiterte Transaktion ist, wird es eine Art Bedauern aus der Mentalität geben, so dass diese Strategie die Multi-Level-Take-Profit-Methode verwendet, das heißt, wenn der schwimmende Gewinn 5% erreicht, wird der aktive Profitmodus der ersten Ebene eingeschaltet. Sobald die 100% vom höchsten Punkt des schwimmenden Gewinns abgezogen werden, nehmen Sie den Gewinn und schließen Sie die Position; wenn der schwimmende Gewinn 10% erreicht, wird der aktive Profitmodus der zweiten Ebene aktiviert. Sobald die 50% vom höchsten Punkt des schwimmenden Gewinns abgezogen werden, nehmen Sie den Gewinn und schließen Sie die Position; Wenn der schwimmende Gewinn 20% erreicht, wird die drei-Level-Profit-Taking-Logik aktiviert. Sobald die 20%-Logik vom höchsten Punkt der schwimmenden Profit-M
Definition der oberen Schiene
Definition der unteren Schiene
Definition des gleitenden Durchschnitts
Offene Long-Position: Der Schlusskurs ist höher als der Upper-Rail und der Upper-Rail ist höher als der gleitende Durchschnitt
Offene Kurzposition: Schlusskurs ist niedriger als unterer Schiene und unterer Schiene kleiner als gleitender Durchschnitt
Schließung der Long-Position: Der Schlusskurs ist niedriger als der unteren Kurs oder der Schlusskurs ist niedriger als der gleitende Durchschnitt
Schließung der Shortposition: Der Schlusskurs ist höher als der Obergleis oder der Schlusskurs ist höher als der gleitende Durchschnitt
Level 1 Long Position Take Profit: Der höchste Preis nach Eröffnung der Position ist größer oder gleich dem Eröffnungspreis multipliziert mit der ersten Eröffnungspreisstufe und der niedrigste Preis ist kleiner oder gleich dem höchsten Preis nach Eröffnung der Position abzüglich des variablen Gewinns multipliziert mit dem Auslöserwert der Eröffnungspreisstufe Take Profit
Level 2 Long Position Take Profit: Der höchste Preis nach Eröffnung der Position ist größer oder gleich dem Eröffnungspreis multipliziert mit der zweiten Anfangsgewinnstufe, und der niedrigste Preis ist kleiner oder gleich dem höchsten Preis nach Eröffnung der Position abzüglich des variablen Gewinns multipliziert mit dem Auslöserwert für die Eröffnung der zweiten Level Take Profit
Level 3 Long Position Take Profit: Der höchste Preis nach Eröffnung der Position ist größer oder gleich dem Eröffnungspreis multipliziert mit der dritten Profitstufe, und der niedrigste Preis ist kleiner oder gleich dem höchsten Preis nach Eröffnung der Position abzüglich des variablen Gewinns multipliziert mit dem Auslöserwert für die Eröffnung der Position Take Profit
Level 1 Short Position Take Profit: Der niedrigste Preis nach Eröffnung der Position ist kleiner oder gleich dem Eröffnungspreis multipliziert mit der ersten Eröffnungspreisstufe und der höchste Preis ist größer oder gleich dem niedrigsten Preis nach Eröffnung der Position zuzüglich des variablen Gewinns multipliziert mit dem Eröffnungspreis Take Profit Triggerwert.
Level 2 Short Position Take Profit: Der niedrigste Preis nach Eröffnung der Position ist kleiner oder gleich dem Eröffnungspreis multipliziert mit der zweiten Anfangsgewinnstufe und der höchste Preis ist größer oder gleich dem niedrigsten Preis nach Eröffnung der Position zuzüglich des variablen Gewinns multipliziert mit dem Auslöserwert für die Eröffnung der zweiten Level Take Profit.
Level 3 Short Position Take Profit: Der niedrigste Preis nach Eröffnung der Position ist kleiner oder gleich dem Eröffnungspreis multipliziert mit der dritten Anfangsgewinnstufe und der höchste Preis ist größer oder gleich dem niedrigsten Preis nach Eröffnung der Position zuzüglich des variablen Gewinns multipliziert mit dem Auslöserwert für die Eröffnung der Position Take Profit
Long Position Stop Loss: Der Schlusskurs ist kleiner oder gleich dem Eröffnungskurs multipliziert mit dem Stop Loss-Faktor
Short Position Stop Loss: Der Schlusskurs ist kleiner oder gleich dem Eröffnungskurs multipliziert mit dem Stop Loss-Faktor
Basierend auf der obigen Strategie Logik können wir diese Strategie auf der FMZ Quant Plattform umsetzen.fmz.com> Anmeldung > Dashboard > Strategiebibliothek > Neue Strategie > Klicken Sie auf das Dropdown-Menü in der oberen rechten Ecke, um Meine Sprache auszuwählen, mit dem Schreiben der Strategie zu beginnen und auf die Kommentare im folgenden Code zu achten.
Zunächst werden die Parameter, die in der Strategie verwendet werden müssen: die durchschnittliche Linienlänge, der Stop-Loss-Bereich, der Take-Profit-Parameter usw., alle als externe Parameter definiert, um das Debugging und die Optimierung von Tests zu erleichtern.
/ / Define parameters
LENGTH := 100; // moving average parameter
STOP_LOSS := 3; // Stop Loss range
// Define the take profit parameter
STARTPER1 := 5; // Level 1 tracking take profit, start from profit reaches 5%
STOPPER1 := 100; // Level 1 tracking take profit, profit retracement 100% triggers it
STARTPER2 := 10; // Level 2 tracking take profit, start from profit reaches 10%
STOPPER2 := 50; // Level 2 tracking take profit, profit retracement 50% trigger it
STARTPER3 := 20; // Level 3 tracking take profit, start from profit reaches 20%
STOPPER3 := 20; // Level 3 tracking take profit, profit retracement 20% trigger
Durch diese Preisspanne und die relative Positionsbeziehung zum gleitenden Durchschnitt kann nicht nur das Signal für den Kauf und Verkauf offener Positionen gut verfolgt werden, sondern auch die Anzahl der offenen Positionen in der Schockperiode und das Ausmaß des Rückzugs reduziert werden.
/ / Define the upper and lower intervals
NN := BARSLAST(DATE <> REF(DATE, 1)) + 1; // current number of cycles
TODAY_OPEN := VALUEWHEN(NN = 1, O); // Opening price of the day
TODAY_HIGH := HHV(H, NN); // The highest price of the day
TODAY_LOW := LLV(L, NN); // lowest price of the day
YESTERDAY_HIGH := REF(TODAY_HIGH, NN); // Yesterday's highest price
YESTERDAY_LOW := REF(TODAY_LOW, NN); // yesterday's lowest price
BAND := YESTERDAY_HIGH - YESTERDAY_LOW; // Yesterday amplitude
UPPERLINE : TODAY_OPEN + BAND; // upper line
LOWERLINE : TODAY_OPEN - BAND; // lower line
MYMA:MA(CLOSE, LENGTH); // Moving average
Wenn der Schlusskurs größer ist als der obere Schiene und der obere Schiene größer als der gleitende Durchschnitt, öffnen Sie die Long-Position; wenn der Schlusskurs niedriger ist als der untere Schiene und der untere Schiene kleiner als der gleitende Durchschnitt, öffnen Sie die Short-Position; die Schlussposition ist genau gegenüber der Öffnungsposition: wenn der Schlusskurs kleiner ist als der untere Schiene oder der Schlusskurs kleiner als der gleitende Durchschnitt, schließen Sie die Long-Position; wenn der Schlusskurs größer ist als der obere Schiene oder der Schlusskurs größer ist als der gleitende Durchschnitt, schließen Sie die Short-Position.
// open the position
C > UPPERLINE AND UPPERLINE > MYMA, BK; // Open long position
C < LOWERLINE AND LOWERLINE < MYMA, SK; // Open short position
// close the position
C < LOWERLINE OR C < MYMA, SP; // Close long position
C > UPPERLINE OR C > MYMA, BP; // Close short position
Schließlich ist es der Stop-Loss- und Take-Profit-Teil, den wir in diesem Artikel erwähnt haben. Ob es sich um eine Long- oder Short-Position handelt, um Gewinn zu erzielen, es ist in drei Phasen unterteilt. Jede Stufe wird automatisch entsprechend den aktuellen Marktpreisschwankungen und der Rentabilität angepasst. Und diese Anpassung wird auf externe Parameter festgelegt, Sie können feine Anpassungen entsprechend den verschiedenen Marktbedingungen und dem Sortenstatus vornehmen.
Der Stop-Loss ist auch ein Teil unserer Strategie, die wir berücksichtigen müssen, da es unmöglich ist, Geld zu verdienen, indem wir eine Position eröffnen. Manchmal ist der Markt unseren Erwartungen zuwider, so dass der Stop-Loss absolut notwendig ist. Der Stop-Loss dieses Artikels ist einfach und
// long position take profit
BKHIGH >= BKPRICE * (1 + 0.01 * STARTPER1) AND LOW <= BKHIGH - (BKHIGH - BKPRICE) * 0.01 * STOPPER1, SP; // level 1
BKHIGH >= BKPRICE * (1 + 0.01 * STARTPER2) AND LOW <= BKHIGH - (BKHIGH - BKPRICE) * 0.01 * STOPPER2, SP; // level 2
BKHIGH >= BKPRICE * (1 + 0.01 * STARTPER3) AND LOW <= BKHIGH - (BKHIGH - BKPRICE) * 0.01 * STOPPER3, SP; // level 3
// short position take profit
SKLOW <= SKPRICE * (1 - 0.01 * STARTPER1) AND HIGH >= SKLOW + (SKPRICE - SKLOW) * 0.01 * STOPPER1, BP; // level 1
SKLOW <= SKPRICE * (1 - 0.01 * STARTPER2) AND HIGH >= SKLOW + (SKPRICE - SKLOW) * 0.01 * STOPPER2, BP; // level 2
SKLOW <= SKPRICE * (1 - 0.01 * STARTPER3) AND HIGH >= SKLOW + (SKPRICE - SKLOW) * 0.01 * STOPPER3, BP; // level 3
// stop loss
C <= BKPRICE * (1 - STOP_LOSS * 0.01), SP; // long position
C >= SKPRICE * (1 + STOP_LOSS * 0.01), BP; // short position
Darüber hinaus haben wir auch die Bestelldelegationsmethode sowie die Signalfilterung festgelegt, um die Verarbeitung vollständiger zu gestalten.
// Set the order commission method
SETSIGPRICETYPE(BK,NEW_ORDER);
SETSIGPRICETYPE(SK,NEW_ORDER);
SETSIGPRICETYPE(BP,NEW_ORDER);
SETSIGPRICETYPE(SP,NEW_ORDER);
// Set the signal filtering method
AUTOFILTER;
Prüfumgebung
Leistungsbericht
Fondskurve
Klicken Sie, um die vollständige Strategiequelle ohne Konfiguration zu kopierenhttps://www.fmz.com/strategy/166753