Trend nach der EMA- und RSI-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-09-26
Tags:

Übersicht

Diese Strategie nutzt die gleitenden Durchschnittswerte und den Relative Strength Index voll aus, um Trends zu identifizieren und zu verfolgen. Sie benötigt nur zwei Indikatoren, um den Trend zu bestimmen und den richtigen Eintritts-/Austrittszeitpunkt zu finden.

Strategie Logik

Die Strategie verwendet drei EMAs mit unterschiedlichen Perioden, wobei EMA-A die kürzeste Periode, EMA-B das mittlere und EMA-C das längste hat. Wenn die kürzere EMA-A über die längere EMA-B überschreitet, signalisiert sie einen Aufwärtstrend und geht damit lang. Umgekehrt signalisiert EMA-A, wenn sie unter EMA-B überschreitet, einen Abwärtstrend und geht damit kurz. Um falsche Signale zu filtern, verwendet sie auch die längste EMA-C - nur unter Berücksichtigung des Eingangs nach dem Preisbruch EMA-C.

Die Strategie verwendet auch den RSI, um Exit-Punkte zu lokalisieren. Wenn es lang ist, schließt es die Position, wenn der RSI über 70 fällt. Wenn es kurz ist, geht es aus, wenn der RSI unter 30 fällt. Dies sperrt den Trendgewinn und verhindert, dass Verluste weiter zunehmen.

Analyse der Vorteile

  • Nutzt die Stärke des EMA bei der Trendbestimmung
  • RSI hilft bei der Ein- und Ausstiegszeit
  • Einfache Strategie mit nur zwei Indikatoren
  • Anpassbare Parameter zur Anpassung des Strategie-Stils
  • Gewinn aus frühen, mittleren und späten Trendphasen

Risikoanalyse

  • Pullbacks in wichtigen Trends können falsche Signale erzeugen
  • Anfällig für Whipsaws auf verschiedenen Märkten
  • Unzulässige RSI-Parameter können zu vorzeitigen Ausstiegen führen
  • Die EMA-Perioden müssen sorgfältig ausgewählt werden, zu kurz können lautempfindlich sein, zu lang können Trends verpassen

Diese Risiken können durch die Optimierung der RSI-Parameter, das Hinzufügen von Filtern und die Kombination mit der Trendanalyse reduziert werden.

Optimierungsrichtlinien

  • Optimierung der RSI-Parameter für eine bessere Gewinngewinnung und Risikokontrolle
  • Versuche verschiedene Kombinationen von EMA-Perioden
  • Volumen oder andere Bestätigungsindikatoren hinzufügen
  • Verwenden Sie ATR für die Stop-Loss-Dimension
  • Erwägen Sie eine Reduzierung der Positionsgröße in der Mitte des Trends
  • Optimieren Sie die Eintrittszeit mit Ausbrüchen, Volumen usw.
  • Erforschung von Rückkehrmechanismen

Zusammenfassung

Diese Strategie kombiniert Trend-Folgen und Oszillator-Indikatoren zur Trendidentifizierung und -Erfassung. Mit einfachen Parametern und Logikoptimierung kann sie erheblich verbessert werden, während die Einfachheit beibehalten wird.


/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 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/
//@author Alorse

//@version=5
// strategy(title='Tendency EMA + RSI [Alorse]', shorttitle='Tendece EMA + RSI [Alorse]', overlay=true, pyramiding=0, currency=currency.USD, default_qty_type=strategy.percent_of_equity, initial_capital=1000, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.01)

// Bollinger Bands
len = input.int(14, minval=1, title='Length', group='RSI')
src = input.source(close, 'Source', group='RSI')
rsi = ta.rsi(src, len)

// Moving Averages
len_a = input.int(10, minval=1, title='EMA A Length', group='Moving Averages')
out_a = ta.ema(close, len_a)
plot(out_a, title='EMA A', color=color.purple)

len_b = input.int(20, minval=1, title='EMA B Length', group='Moving Averages')
out_b = ta.ema(close, len_b)
plot(out_b, title='EMA B', color=color.orange)

len_c = input.int(100, minval=1, title='EMA C Length', group='Moving Averages')
out_c = ta.ema(close, len_c)
plot(out_c, title='EMA B', color=color.green)

// Strategy Conditions
stratGroup = 'Strategy'
showLong = input.bool(true, title='Long entries', group=stratGroup)
showShort = input.bool(false, title='Short entries', group=stratGroup)
closeAfterXBars = input.bool(true, title='Close after X # bars', tooltip='If trade is in profit', group=stratGroup)
xBars = input.int(24, title='# bars')

entryLong = ta.crossover(out_a, out_b) and out_a > out_c and close > open
exitLong = rsi > 70

entryShort = ta.crossunder(out_a, out_b) and out_a < out_c and close < open
exitShort = rsi < 30


bought = strategy.opentrades[0] == 1 and strategy.position_size[0] > strategy.position_size[1]
entry_price = ta.valuewhen(bought, open, 0)
var int nPastBars = 0
if strategy.position_size > 0
    nPastBars := nPastBars + 1
    nPastBars
if strategy.position_size == 0
    nPastBars := 0
    nPastBars
if closeAfterXBars
    exitLong := nPastBars >= xBars and close > entry_price ? true : exitLong
    exitLong
    exitShort := nPastBars >= xBars and close < entry_price ? true : exitShort
    exitShort

// Long Entry
strategy.entry('Long', strategy.long, when=entryLong and showLong)
strategy.close('Long', when=exitLong)

// Short Entry
strategy.entry('Short', strategy.short, when=entryShort and showShort)
strategy.close('Short', when=exitShort)



Mehr