EMA-Überschreitende Entwicklung nach Strategie

Schriftsteller:ChaoZhang, Datum: 2023-12-27 16:31:15
Tags:

img

Übersicht

Diese Strategie verwendet EMA-Crossover, um Preistrends zu verfolgen. Es geht lang, wenn die schnelle EMA über die langsame EMA überschreitet, und schließt die Position, wenn die schnelle EMA unter die langsame EMA überschreitet.

Strategie Logik

Der Kernindikator dieser Strategie ist der EMA.

EMA (t) = C (t) ×2/ (n+1) + EMA (t-1) × (n-1) / (n+1)

Die EMA ist eine gleitende Durchschnittstechnik mit einem gewichteten Faktor, die den jüngsten Preisen mehr Gewicht verleiht und so schneller auf die jüngsten Kursänderungen reagiert.

Die Strategie konstruiert schnelle und langsame EMAs und nimmt schnelle EMA-Kreuzung über langsame EMA als Kaufsignal und schnelle EMA-Kreuzung unter langsame EMA als Verkaufssignal. Die schnelle EMA-Kreuzung oben zeigt den Beginn einer neuen Runde des Anstiegs an, während schnelle EMA-Kreuzung unten das Ende des Aufwärtstrends und den Beginn eines Rückgangs anzeigt.

Analyse der Vorteile

Die Vorteile dieser Strategie sind:

  1. Die Logik ist einfach und leicht zu verstehen und umzusetzen.
  2. Nutzen Sie die einfache und praktische EMA, um die Preisentwicklung zu beurteilen, und vermeiden Sie es, wichtige Trends zu übersehen.
  3. Wenige Parameter zur Anpassung und Optimierung, hauptsächlich auf schnelle und langsame EMAs angewiesen;
  4. Fähig, nach dem Kauf Aufwärtstrends zu verfolgen;
  5. Vermeidung von Rückzügen nach dem Verkauf und Risikominderung;
  6. Ausreichende Daten aus Backtests mit hoher Zuverlässigkeit.

Risikoanalyse

Die wichtigsten Risiken sind:

  1. hohe Wahrscheinlichkeit falscher Signale der EMA;
  2. Häufiges Signal, wenn der Markt in einem Bereich liegt, da sich die EMAs leicht überschneiden;
  3. Nicht in der Lage, den Verlust rechtzeitig zu stoppen, wenn plötzliche Ereignisse zu einem starken Richtungswechsel führen;
  4. Begrenzter Optimierungsraum, so dass die tatsächliche Leistung die Rückprüfungsergebnisse untertreffen kann.

Zur Verringerung der oben genannten Risiken können folgende Optimierungsmaßnahmen ergriffen werden:

  1. Hinzufügen von Filterbedingungen mit anderen Indikatoren, um falsche Signale zu vermeiden;
  2. Anpassung von Parametern zur Verringerung der Signalfrequenz;
  3. Hinzufügen einer Stop-Loss-Strategie zur Kontrolle einzelner Verluste;
  4. Verschiedene Zeitrahmenparameter testen, um das Optimum zu finden.

Optimierungsrichtlinien

Die Strategie kann aus folgenden Gesichtspunkten optimiert werden:

  1. Zusammengesetzte Indikatoren über mehrere Zeitrahmen hinweg, z. B. die wöchentliche oder monatliche Entwicklung kombinieren;
  2. Hinzufügen von Filterbedingungen, um einen falschen Ausbruch zu vermeiden, z. B. Volumen, Bollinger-Bänder usw.
  3. Dynamische Anpassung der Parameter an Echtzeitmarktveränderungen;
  4. Einbeziehung anderer Indikatoren für den Aufbau von Modellen, z. B. Raster, Regressionsalgorithmen.

Zusammenfassung

Zusammenfassend ist dies eine einfache und praktische Trendfolgestrategie, bei der die EMA verwendet wird, um Preistrends zu beurteilen. Die Logik ist klar und einfach zu implementieren. Die Vorteile liegen in der Einfachheit, Parameter anzupassen und Trends effektiv zu verfolgen. Die Nachteile sind anfällig für falsche Signale und die tatsächliche Leistung kann unter den Backtests liegen. Die nächsten Schritte der Optimierung können sich auf das Hinzufügen von Filtern, dynamischen Parametern, Modellbau konzentrieren, um die Strategie robuster zu machen.


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

//@version=4
strategy("EMA交叉策略by GPT",
     format = format.inherit,
     overlay = true,
     default_qty_type= strategy.percent_of_equity,
     default_qty_value = 100,
     currency = currency.USD,
     initial_capital = 1000000)


// 定義回測交易開始和結束時間的變數
start_time = input(title="開始時間", type=input.time, defval=timestamp("01 Jan 2020 00:00 +0000"))
end_time = input(title="結束時間", type=input.time, defval=timestamp("31 Dec 2050 23:59 +0000"))


// 判斷是否在回測交易時間範圍內
in_range = true


// Define input variables
fast_length = input(title="Fast EMA Length", type=input.integer, defval=5)
slow_length = input(title="Slow EMA Length", type=input.integer, defval=20)


// Define EMAs
fast_ema = ema(close, fast_length)
slow_ema = ema(close, slow_length)


// Define buy and sell signals
buy_signal = crossover(fast_ema, slow_ema)
sell_signal = crossunder(fast_ema, slow_ema)


// Buy signal
if in_range and buy_signal
    strategy.entry("Buy", strategy.long, when=in_range)
   
// Sell signal
if in_range and sell_signal
    strategy.close("Buy", when=sell_signal)

Mehr