Die drei EMA Stochastic RSI Crossover Golden Cross-Strategie

Schriftsteller:ChaoZhang, Datum: 2024-01-26 16:07:34
Tags:

img

Übersicht

Die Three EMA Stochastic RSI Crossover Golden Cross Strategie ist eine Trendfolgestrategie, die den Three EMA Indikator und den Stochastic Relative Strength Index kombiniert, um Eingangssignale basierend auf dem Crossover der beiden Indikatoren zu bestimmen.

Strategie Logik

Die Signaldetermination dieser Strategie beruht auf der folgenden Logik:

  1. Drei EMA, um den Trend zu bestimmen: eine 8-tägige EMA oben, eine 14-tägige EMA in der Mitte und eine 50-tägige EMA unten bilden einen Aufwärtstrend; umgekehrt bilden sie einen Abwärtstrend.

  2. Nur lang gehen; kurz wird für jetzt nicht in Betracht gezogen.

Analyse der Vorteile

  1. Drei EMA filtern kurzfristige Geräusche aus und schließen mittelfristige Trends ein.

  2. Der Stochastische RSI Goldene Kreuz bestätigt einen starken Aufwärtstrend.

  3. ATR-Smart-Stop-Loss- und Take-Profit-Sperren für Gewinne.

  4. Einfache und klare Strategie-Logik, leicht zu verstehen und umzusetzen.

Risikoanalyse

Die wichtigsten Risiken dieser Strategie sind:

Optimierungsrichtlinien

Zu den wichtigsten Optimierungsrichtungen gehören:

  1. Optimierung der EMA-Parameter zur Verbesserung der Trendbestimmung.

  2. Fügen Sie Volatilitätsindikatoren wie ATR hinzu, um Stops und Limits zu verbessern.

  3. Einfügen Sie Lautstärke, um falsche Ausbrüche zu vermeiden.

  4. Verwenden Sie maschinelles Lernen usw. für Parameteroptimierung.

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass die Three EMA Stochastic RSI Crossover Strategie durch die Kombination von Dual-Indikator-Bestimmung die Konsolidierung und Trends effektiv herausfiltert, wodurch sie zu einer einfachen und praktischen Trendfolgestrategie wird.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="Stoch RSI Crossover Strat + EMA", shorttitle="Stoch RSI Cross + EMA Strat", overlay = true)

// Time Range
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2020,title="FromYear",minval=2017)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true

// See if this bar's time happened on/after start date
afterStartDate = time >= start and time<=finish?true:false

//STOCH RSI
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

//ATR
lengthATR = input(title="ATR Length", defval=14, minval=1)
atr = atr(lengthATR)

//MULTI EMA
emasrc = close, 
len1 = input(8, minval=1, title="EMA 1")
len2 = input(14, minval=1, title="EMA 2")
len3 = input(50, minval=1, title="EMA 3")

ema1 = ema(emasrc, len1)
ema2 = ema(emasrc, len2)
ema3 = ema(emasrc, len3)

col1 = color.lime
col2 = color.blue
col3 = color.orange

//EMA Plots
//plot(ema1, title="EMA 1", linewidth=1, color=col1)
//plot(ema2, title="EMA 2", linewidth=1, color=col2)
//plot(ema3, title="EMA 3", linewidth=1, color=col3)

crossup = k[0] > d[0] and k[1] <= d[1]
emapos = ema1 > ema2 and ema2 > ema3 and close > ema1
barbuy = crossup and emapos

//plotshape(crossup, style=shape.triangleup, location=location.belowbar, color=color.white)
plotshape(barbuy, style=shape.triangleup, location=location.belowbar, color=color.green)

longloss = sma(open, 1)
//plot(longloss, color=color.red)

//Buy and Sell Factors
profitfactor = input(title="Profitfactor", type=input.float, step=0.1, defval=2)
stopfactor = input(title="Stopfactor", type=input.float, step=0.1, defval=3)
bought = strategy.position_size[1] < strategy.position_size
longcondition = barbuy

if (longcondition) and (afterStartDate) and strategy.opentrades < 1
    strategy.entry("Long", strategy.long)

if (afterStartDate) and strategy.opentrades > 0
    barsbought = barssince(bought)
    profit_level = strategy.position_avg_price + (atr*profitfactor)
    stop_level = strategy.position_avg_price - (atr*stopfactor)
    strategy.exit("Take Profit/ Stop Loss", "Long", stop=stop_level[barsbought], limit=profit_level[barsbought])









Mehr