SMA- und RSI-Langzeitstrategie

Schriftsteller:ChaoZhang, Datum: 18.12.2023
Tags:

img

Übersicht

Diese Strategie wurde von den Artikeln von Enrico Malverti übernommen. Sie verwendet hauptsächlich den einfachen gleitenden Durchschnitt (SMA) und den Relative Strength Index (RSI) zur Identifizierung von Long-Eintritts- und -Ausgangssignalen.

Strategie Logik

Das Eintrittssignal wird ausgelöst, wenn der Schlusskurs über die längere SMA-Linie geht.

Zu den Ausgangssignalen gehören:

  1. Schließen von Long, wenn der RSI unter 70 oder über 75 liegt;
  2. Stopp-Loss, wenn der Schlusskurs unter die kurzfristige SMA-Linie fällt;
  3. Gewinn machen, wenn der Schlusskurs unterhalb der kurzfristigen SMA-Linie liegt.

Die Stop-Loss-SMA-Linie und die Take-Profit-SMA-Linie sind ebenfalls gezeichnet.

Analyse der Vorteile

Die Vorteile dieser Strategie:

  1. Verwendet eine einfache und leicht verständliche Indikatorkombination;
  2. Es geht nur lang, um Leerverkaufsrisiken zu vermeiden;
  3. Die Risikopositionen werden in den folgenden Kategorien unterteilt:
  4. Einfach zu optimieren durch Anpassung von SMA-Perioden usw.

Risikoanalyse

Es gibt einige Risiken:

  1. Psychologische Verzerrung des Vertrauensverlustes nach Verlusten;
  2. Eine Verlagerung der SMA-Linie kann Risiken verursachen;
  3. RSI-Divergenzsignale können unzuverlässig sein.

Lösungen:

  1. Ein fester Handelsmechanismus nach Regeln aufzubauen;
  2. Optimierung der SMA-Perioden;
  3. Zusätzliche Filter für RSI-Signale.

Optimierungsrichtlinien

Die Strategie kann weiter optimiert werden:

  1. Versuche verschiedene Parameter für SMA;
  2. Zusätzliche Indikatoren als Filter;
  3. Hinzufügen einer Trendkennzeichnung zur Unterscheidung von Trend und Konsolidierung;
  4. Anpassung und Optimierung von Parametern.

Schlussfolgerung

Die Gesamtidee ist einfach und klar. Mit grundlegenden Indikatoren und Steuerbarkeit eignet sie sich für den mittelfristigen Handel. Aber Parameter-Tuning und Indikatorfiltering erfordern viele Tests und Optimierungen, um die Strategie solider und zuverlässiger zu machen. Einfache Ideen erfordern große Anstrengungen bei der Optimierung und Kombination, um echte brauchbare Handelssysteme zu bilden.


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

//@version= 4
// form the original idea of Enrico Malverti www.enricomalverti.com , trading system 2015  
// https://sauciusfinance.altervista.org
strategy(title="MAs & RSI strategy long only", overlay = true, max_bars_back=500)

///********FROM EMAS TO SIMPLE MA *****
// NON AGGIUNTO SCHAFF INDICATOR, che serve per discriminare quali titoli scegliere dallo screener (segnale già aperto o il primo o, a parità,
//quello più alto) ==> Tolte le bande di Bollinger (che filtrano "poco")

// INPUTS 
emapf = input(14, title ="Ma periodo veloce",  minval=1, step = 1)
emapl = input(14, title ="Ma periodo lungo",  minval=1, step = 1)
emaps = input(7, title ="Ma periodi stop",  minval=1, step = 1)
rsi_period = input(14, title="RSI period", minval = 1, step = 1) 
// CALCULATIONS
maf = sma(close, emapf)
mal = sma(close, emapl)
// rsi
myrsi = rsi(close, rsi_period)
//ema stop long ed ema stop short
//Ema7 messo da "massimo" a "chiusura" come target per posizioni short. Il limite è, in questo caso, sempre ema20 (più restringente - asimmetria)
// in questo t.s., lo short viene soltanto indicato come "rappresentazione grafica", non agito
mass = sma(close, emaps)
masl = sma(low, emaps)
ma200=sma(close,200)
/// Entry
strategy.entry("Long", true, when = crossover(close,mal))

rsi1 = crossunder(myrsi,70)
rsi2 = myrsi > 75
// previously, 80
st_loss_long = crossunder(close,masl)// **chiusura sotto EMA7**
target_long= crossunder(close,maf) //* Chiusura sotto EMA14*
// exits. *RSI**Long: Target if over bandamax, loss if under bandamin. Viceversa, for short
strategy.close("Long", when = rsi1, comment="crossunder RSI")
strategy.close("Long", when = rsi2, comment ="RSI MAX")
strategy.close("Long", when = st_loss_long, comment = "Stop loss")
strategy.close("Long", when = target_long, comment = "target_long" )

plot(masl, title="ma stop long", color=#363A45, linewidth= 1, style=plot.style_cross)
plot(maf, title="MA FAST", color=#FF0000,  linewidth= 1)
plot(mal, title="MA SLOW", color=#0000FF,  linewidth= 2)
plot(mass, title="ma stop short", color=#787B86,linewidth= 1, style=plot.style_cross)
plot(ma200, title="ma200", color=color.black,  linewidth= 1)

Mehr