Umgekehrte Strategie zur Umkehrung der Mittelwerte basierend auf gleitenden Durchschnitten

Schriftsteller:ChaoZhang, Datum: 21.12.2023
Tags:

img

Die Strategie heißt Mean Reversion Reverse Strategy Based on Moving Average. Die Hauptidee ist es, zu kaufen, wenn der Preis die wichtigsten gleitenden Durchschnitte durchbricht und Gewinn zu machen, wenn vorgegebene Ziele erreicht werden.

Der Hauptprinzip dieser Strategie besteht darin, Rebound-Möglichkeiten in Bereichsgebundenen Märkten zu erfassen, indem die Umkehrung von kurzfristigen gleitenden Durchschnitten verwendet wird. Insbesondere, wenn die Preise längerfristige gleitende Durchschnitte (wie 20-Tage- und 50-Tage-MA) durchbrechen und Anzeichen eines starken Überverkaufs zeigen, neigen die Preise zu einem gewissen Grad aufgrund der durchschnittlichen Umkehrcharakteristik von Marktschwankungen zu erholen. Zu diesem Zeitpunkt, wenn kürzere Zyklusgleitende Durchschnitte (wie 10-Tage-MA) ein Aufwärtsumkehrsignal zeigen, wäre es ein guter Zeitpunkt zum Kauf. In dieser Strategie kauft es, wenn der Preis unter dem 20-Tage-MA liegt, während er über dem 50-Tage-MA liegt, um seinen Rebound mit kurzfristiger Umkehr zu erfassen.

Die spezifische Einstiegslogik ist: Kaufen Sie 1 Lot, wenn der Preis den 20-Tage-MA durchbricht, fügen Sie 1 Lot hinzu, wenn Sie den 50-Tage-MA durchbrechen, fügen Sie weiterhin 1 Lot hinzu, wenn Sie den 100-Tage-MA durchbrechen, und fügen Sie bis zu 1 Lot hinzu, wenn Sie den 200-Tage-MA durchbrechen, für maximal 4 Lots. Nehmen Sie Gewinn, nachdem Sie die vorgegebenen Ziele erreicht haben. Es legt auch die Zeit und Stop-Loss-Bedingungen fest.

Analyse der Vorteile

  1. Effektive Ermittlung von kurzfristigen Rebound-Möglichkeiten unter Verwendung der Umkehrmerkmale gleitender Durchschnitte
  2. Verringern Sie die Risiken eines einzelnen Punktes durch Pyramidenordnungen
  3. Gewinnbindung durch Festlegung von Gewinnziele
  4. Vermeiden Sie falsche Ausbrüche, indem Sie Filter für den offenen Preis und die vorherigen niedrigen Preise verwenden

Risikoanalyse

  1. Die Verluste würden sich vergrößern, wenn der Markt weiter sinkt.
  2. MA-Signale können falsche Signale auslösen, was zu Verlusten führt
  3. Wenn das Gewinnziel nicht erreicht wird, kann der Gewinn nicht vollständig oder teilweise erzielt werden.

Optimierungsrichtlinien

  1. Probieren Sie Rentabilität und Stabilität unter verschiedenen Parameter-Einstellungen
  2. Erwägen Sie, andere Indikatoren wie MACD, KD zu kombinieren, um Einträge zu entscheiden.
  3. Auswahl geeigneter Zulassungsfristen auf der Grundlage der Merkmale der verschiedenen Erzeugnisse
  4. Einführung von Algorithmen für maschinelles Lernen zur dynamischen Optimierung von Parametern

Zusammenfassung

Im Allgemeinen ist dies eine klassische und universelle MA-Handelsstrategie. Sie nutzt die Glättungsfunktion von MA korrekt, kombiniert mit mehreren MA, um kurzfristige Kaufmöglichkeiten zu identifizieren. Sie kontrolliert Risiken, indem sie Aufträge pyramidiert und rechtzeitig Gewinne erzielt. Aber ihre Reaktion auf Marktereignisse wie wichtige Politiknachrichten kann passiver sein. Dies ist etwas, das weiter optimiert werden kann. Insgesamt kann diese Strategie mit entsprechenden Verbesserungen in der Parameteroptimierung und Risikokontrolle eine stetige Überzugsrendite erzielen.


/*backtest
start: 2023-12-13 00:00:00
end: 2023-12-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)

// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]

// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)

Mehr