
Die Strategie ermöglicht den Trend-Tracking-Handel durch die Berechnung von EMA-Moving Averages aus verschiedenen Perioden und deren Kreuzung in Kombination mit dem RSI-Indikator. Die Kernidee ist: Wenn die kurzfristige EMA-Linie von unten durch die EMA-Linie mit längerer Periode ein Kaufsignal erzeugt; Wenn die kurzfristige EMA von oben durch die EMA-Linie mit längerer Periode ein Verkaufsignal erzeugt, wird das Handelssignal, das durch eine solche EMA-Kreuzung gebildet wird, verfolgt.
Die Strategie nutzt vor allem die schnelle und langsame Eigenschaft der EMA und berechnet 5 EMA-Linien mit unterschiedlichen Perioden, darunter die 9-Tage-, 21-Tage-, 51-Tage-, 100-Tage- und 200-Tage-Linien. Die kurzperiodischen EMA-Linien reagieren schneller auf Preisänderungen, während die längerperiodischen EMA-Linien relativ geräuscharm sind und den Markttrend widerspiegeln. Wenn die kurzperiodischen EMA-Linien von unten durch die längeren EMA-Linien gehen, bedeutet dies, dass die Preise steigen und ein Kaufsignal sind.
Darüber hinaus führt die Strategie eine RSI-Anzeige-Hilfsentscheidung ein. Ein Kaufsignal wird nur ausgegeben, wenn der RSI größer als 65 ist, und ein Verkaufsignal wird nur ausgegeben, wenn der RSI kleiner als 40 ist. Dies kann einige falsche Signale filtern und verhindert, dass der Handel von riesigen Preisschwankungen irregeführt wird.
Der größte Vorteil dieser Strategie besteht darin, dass die Markttrends effektiv verfolgt werden können. Durch die schnelle und langsame Eigenschaft der EMA können mehrere EMA-Mittellinien festgelegt werden, um ihre Kreuzung zu beurteilen und Kauf- und Verkaufssignale zu erzeugen, die den Trend der mittleren und langen Linie erfassen können. Diese Trendverfolgungsstrategie hat eine hohe Gewinnrate und eignet sich für die langen Linie.
Darüber hinaus führt die Strategie die Einführung des RSI-Indikators zur Unterstützung der Beurteilung ein, um Geräusche effektiv zu filtern und die Unsicherheit der kurzfristigen Marktbewegungen zu vermeiden, wodurch die Signalsicherheit erhöht wird. Die RSI-Parameter werden auf 14 gesetzt, um relativ eindeutige Überkäufe und Überverkäufe zu erfassen.
Insgesamt ist die Strategie eine Kombination aus Trendverfolgung durch Moving Averages und Überkauf-Überverkauf-Bewertungen durch den RSI, die sowohl Trend als auch Fehlsignale erfasst und als eine sehr zuverlässige Trendverfolgungsstrategie eingesetzt wird.
Die größte Gefahr dieser Strategie besteht darin, dass es eine gewisse Verzögerung gibt. Die EMA selbst hat eine gewisse Verzögerung der Preisänderungen, insbesondere bei längerperiodischen EMAs, was bedeutet, dass die Erzeugung von Kauf- und Verkaufssignalen mit einer gewissen Verzögerung verbunden ist.
Darüber hinaus treten EMA-Gleichgewicht-Kreuzsignale häufig auf, wenn sich der Markt in einer Schwankung befindet, wobei die Einstellung des RSI-Parameters auf 14 möglicherweise zu viele Signale filtert, was zu verpassten Handelsmöglichkeiten führt.
Um diese Risiken zu verringern, kann man die Periodiparameter für längere EMAs angemessen verkürzen und die Überkauf-Überverkauf-Schwelle des RSI angemessen lockern, um die Signalparameter-Einstellungen empfindlicher zu machen. Natürlich ist es auch erforderlich, ein höheres Risiko für Irreführungen zu übernehmen. Die Parameter müssen an die tatsächlichen Marktbedingungen angepasst werden, um die optimale Balance zu finden.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Optimierung der EMA-Zyklusparameter. Es können mehrere Kombinationen von EMA-Zyklusparametern getestet werden, um optimale Parameterpaare zu finden, die das Signal empfindlicher und zuverlässiger machen.
RSI-Parameter-Optimierung. Es kann geeignet sein, den RSI-Überkauf-Überverkauf-Bereich zu erweitern, um die Signale häufiger auszulösen, oder den Bereich zu verkleinern, um das Risiko einer Fehlmeldung zu verringern.
Erhöhung der Stop-Loss-Mechanismen. Sie können eine mobile Stop-Loss oder eine einmalige Stop-Loss-Lösung einrichten, um die Gewinne zu sperren, was das Risiko von Verlusten wirksam hemmt.
In Kombination mit anderen Indikatoren können andere Indikatoren wie KDJ, MACD usw. eingeführt werden, um das Signal zuverlässiger zu machen und die Effektivität der Strategie zu verbessern.
Positionsmanagement optimieren. Positionsgrößen können dynamisch angepasst werden, je nachdem, wie stark der Markt schwankt.
Die Strategie ermöglicht die effektive Erfassung und Verfolgung von Markttrends durch die Berechnung von mehreren EMA-Mittellinien und deren Kreuzung. Die Strategie kombiniert Trendverfolgung und Überkauf-Überverkauf-Bestimmung. Sie kann die Entwicklung der mittleren und langen Linien erfassen und gleichzeitig falsche Signale filtern. Durch die Optimierung der Parameter und die Kombination der Strategien kann ein stabiles und effizientes quantitatives Handelssystem gebildet werden.
/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Ravikant_sharma
//@version=5
strategy('new', overlay=true)
start = timestamp(1990, 1, 1, 0, 0)
end = timestamp(2023, 12, 12, 23, 59)
ema0 = ta.ema(close, 9)
ema1 = ta.ema(close, 21)
ema2 = ta.ema(close, 51)
ema3 = ta.ema(close, 100)
ema4 = ta.ema(close, 200)
rsi2=ta.rsi(ta.sma(close,14),14)
plot(ema0, '9', color.new(color.green, 0))
plot(ema1, '21', color.new(color.black, 0))
plot(ema2, '51', color.new(color.red, 0))
plot(ema3, '200', color.new(color.blue, 0))
//plot(ema4, '100', color.new(color.gray, 0))
//LongEntry = ( ta.crossover(ema0,ema3) or ta.crossover(ema0,ema2) or ta.crossunder(ema2,ema3) ) // ta.crossover(ema0,ema1) //
LongEntry=false
if ta.crossover(ema0,ema1)
if rsi2>65
LongEntry:=true
if ta.crossover(ema1,ema2)
if rsi2>65
LongEntry:=true
LongExit = ta.crossunder(ema0,ema2) or close >(strategy.position_avg_price*1.25) or rsi2 <40 or close < (strategy.position_avg_price*0.98)
if true
if(LongEntry and rsi2>60)
strategy.entry('Long', strategy.long, 1)
if(LongExit)
strategy.close('Long')