RSI SMA-basierte Burst-Kauf- und Verkaufsstrategie


Erstellungsdatum: 2023-12-20 17:33:04 zuletzt geändert: 2023-12-20 17:33:04
Kopie: 3 Klicks: 655
1
konzentrieren Sie sich auf
1623
Anhänger

RSI SMA-basierte Burst-Kauf- und Verkaufsstrategie

Überblick

Die Strategie nutzt die Mittelwerte des RSI und die plötzlichen Preisveränderungen, um Trends und Wendepunkte zu erkennen. Die Kernidee besteht darin, Positionen zu übernehmen, wenn der RSI überkauft ist, und nach Wendechancen zu suchen, wenn plötzliche Preisveränderungen auftreten. Zusätzlich wird die EMA zur Filterung von Signalen verwendet.

Strategieprinzip

  1. Berechnen Sie den Durchschnitts-SMA des RSI. Wenn der RSI-SMA über 60 oder unter 40 liegt, wird als Überkauf und Überverkauf betrachtet und eine Umkehrposition berücksichtigt.

  2. Wenn der RSI über einen bestimmten Wert wechselt, wird dies als Überschneidung angesehen. In Verbindung mit der Bestätigung des tatsächlichen Schlusskurses wird dies als Signal für die Einrichtung einer Umkehrposition verwendet.

  3. Mit einer EMA-Mehrfachfilterung wird nur dann ein Mehrkopf betrachtet, wenn der Preis einen EMA mit einer kürzeren Periode oben durchläuft; nur dann, wenn der Preis einen EMA mit einer kürzeren Periode unten durchläuft, wird ein Leerkopf betrachtet.

  4. Durch die Kombination der Verwendung von RSI-Durchschnittswerten, Schnellschwankungen und EMA-Filterung wird nach einem günstigen Positionsplatz gesucht.

Analyse der Stärken

  1. Die Verwendung des RSI-Durchschnitts ermöglicht eine genauere Beurteilung von Überkaufen und Überverkaufen und hilft, eine Umkehrmöglichkeit zu ergreifen.

  2. Eine plötzliche Veränderung ist oft ein Hinweis auf eine Änderung der Preisentwicklung und -richtung. Mit diesem Signal kann die Zeitlichkeit des Eintritts verbessert werden.

  3. Die Mehrfachfilterung der EMA verhindert weitere Fehlsignale und verringert somit unnötige Verluste.

  4. Die Integration verschiedener Parameter als Urteilskriterien kann die Stabilität und Zuverlässigkeit der Strategie verbessern.

Risiken und Gegenmaßnahmen

  1. Der RSI ist instabil, die SMA-Wert-Hit-Rate ist nicht hoch. Die Parameter des RSI können entsprechend optimiert oder durch andere Indikatoren ersetzt werden.

  2. Eine plötzliche Veränderung kann eine kurzfristige Erschütterung sein, nicht eine echte Umkehrung. Die Länge der Induktionszyklus kann erhöht werden, um die Richtigkeit der Beurteilung zu verbessern.

  3. Die EMA-Directionalfilter haben eine Verzögerung. Die EMA-Sensitivität kann mit kürzeren Perioden getestet werden.

  4. Insgesamt ist diese Strategie sehr sensibel für Parameteranpassungen und muss sorgfältig getestet werden, um die optimale Kombination von Parametern zu finden.

Optimierungsvorschläge

  1. Testen Sie ADX, MACD und andere Indikatoren in Kombination mit dem RSI, um einen besseren Einstieg zu finden.

  2. Zunehmende Machine-Learning-Algorithmen, die durch Modell-Training die Echtheit und Stabilität von auffälligen Kauf- und Verkaufssignalen beurteilen.

  3. Die Effektivität der EMA-Directional-Filterung wird weiter verbessert, z. B. durch eine verbesserte Zusammenfassung der EMA für verschiedene Perioden.

  4. Zusätzlich zu einer anpassungsfähigen Stop-Loss-Strategie kann der Stop-Loss-Wert dynamisch angepasst werden, je nachdem, wie stark der Markt schwankt.

  5. Weiter optimieren, um die optimale Parameterkombination zu finden. Optimierungskriterien können unter Berücksichtigung des Sharp-Verhältnisses verwendet werden.

Zusammenfassen

Die Strategie nutzt zunächst den RSI-Durchschnitt, um Überkauf-Überverkauf zu ermitteln. Dann wird bei plötzlicher Veränderung eine Rückstellung eingerichtet. Die EMA wird zur Unterstützung der Filterung verwendet.

Strategiequellcode
/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-19 00:00:00
period: 3m
basePeriod: 1m
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/
// © samwillington

//@version=5


strategy("sma RSI & sudden buy and sell Strategy v1", overlay=true)
price = close
length = input( 14 )
inst_length = input( 10 )
var rbc = 0
var float rsiBP = 0.0
var rsc = 0
var float rsiSP = 0.0
bars = input(10)

lookbackno2 = input.int(20)
rsi_buy = 0
rsi_sell = 0



//EMA inputs

input_ema20 = input.int(20)
ema20 = ta.ema(price, input_ema20)
input_ema50 = input.int(50)
ema50 = ta.ema(price, input_ema50)
input_ema100 = input.int(100)
ema100 = ta.ema(price, input_ema100)
input_ema200 = input.int(200)
ema200 = ta.ema(price, input_ema200)
input_ema400 = input.int(400)
ema400 = ta.ema(price, input_ema400)
input_ema800 = input.int(800)
ema800 = ta.ema(price, input_ema800)


vrsi = ta.rsi(price, length)


hi2 = ta.highest(price, lookbackno2)
lo2 = ta.lowest(price, lookbackno2)

buy_diff_rsi = vrsi - ta.rsi(close[1], length)
sell_diff_rsi = ta.rsi(close[1],length) - vrsi


//RSI high low

var int sudS = 0
var int sudB = 0
var float sudSO = 0.0
var float sudSC = 0.0
var float sudBO = 0.0
var float sudBC = 0.0
var sudBuy = 0
var sudSell = 0 
var countB = 0
var countS = 0



var co_800 = false
var co_400 = false
var co_200 = false
var co_100 = false
var co_50 = false
var co_20 = false

co_800 := ta.crossover(price , ema800)
co_400 := ta.crossover(price , ema400)
co_200 := ta.crossover(price , ema200)
co_100 := ta.crossover(price , ema100)
co_50 := ta.crossover(price , ema50)
co_20 := ta.crossover(price , ema20)

if(ta.crossunder(price , ema20))
    co_20 := false
if(ta.crossunder(price , ema50))
    co_50 := false
if(ta.crossunder(price , ema100))
    co_100 := false
if(ta.crossunder(price , ema200))
    co_200 := false
if(ta.crossunder(price , ema400))
    co_400 := false
if(ta.crossunder(price , ema800))
    co_800 := false
    
if((price> ema800) and (price > ema400))
    if(co_20)
        if(co_50)
            if(co_100)
                if(co_200)
                    strategy.close("Sell")
                    strategy.entry("Buy", strategy.long, comment="spl Buy")
                    co_20 := false
                    co_50 := false
                    co_100 := false
                    co_200 := false



// too much rsi

if(vrsi > 90)
    strategy.close("Buy")
    strategy.entry("Sell", strategy.short, comment="RSI too overbuy")
if(vrsi < 10)
    strategy.close("Sell")
    strategy.entry("Buy", strategy.long, comment="RSI too oversold")


var sudbcount = 0  // counting no. of bars till sudden rise
var sudscount = 0  // counting no. of bars till sudden decrease



if(sudB == 1)
    sudbcount := sudbcount + 1
if(sudS == 1)
    sudscount := sudscount + 1


if((buy_diff_rsi > inst_length) and (hi2 > price))
    sudB := 1
    sudBO := open
    sudBC := close
if((sell_diff_rsi > inst_length) )
    sudS := 1
    sudSO := open
    sudSC := close   

if(sudbcount == bars)
    if(sudBC < price)
        strategy.close("Sell")
        strategy.entry("Buy", strategy.long, comment="sudd buy")
        sudbcount := 0
        sudB := 0
    sudbcount := 0
    sudB := 0
if(sudscount == bars) 
    if(sudSC > price)
        strategy.close("Buy")
        strategy.entry("Sell", strategy.short, comment="sudd sell")
        sudscount := 0
        sudS := 0
    sudscount := 0
    sudS := 0


over40 = input( 40 )
over60 = input( 60 )
sma =ta.sma(vrsi, length)
coo = ta.crossover(sma, over60)
cuu = ta.crossunder(sma, over40)

if (coo)
    strategy.close("Sell")
	strategy.entry("Buy", strategy.long, comment="modified buy")
if (cuu)
    strategy.close("Buy")
	strategy.entry("Sell", strategy.short, comment="modefied sell")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)