Mini Pullback Supertrend Strategie

Schriftsteller:ChaoZhang, Datum: 2023-10-13 15:49:29
Tags:

Übersicht

Diese Strategie zielt darauf ab, kleine Pullbacks in einem Trend zu erfassen und lang zu gehen, wenn der Pullback zum Gewinn endet. Es verwendet eine Kombination von technischen Indikatoren wie EMA, MACD, RSI, um den Trend und das Ende von Pullbacks zu identifizieren. Es verwendet auch ATR, um Stop-Loss und Take-Profit-Preise festzulegen.

Grundsätze

Die Strategie berechnet zunächst EMA, MACD und RSI, um die aktuelle Trendrichtung und -stärke zu bestimmen.

Die EMA-Werte werden in der Regel in einer Reihe von Modellen angegeben, in denen die EMA-Werte für die einzelnen EMA-Werte angegeben werden.

Wenn die MACD-Linie oder das Histogramm über die Nulllinie geht, zeigt es eine Stärkung des Aufwärtstrends.

Der RSI zeigt an, ob überkauft/überverkauft wurde.

Dann identifiziert der SuperTrend-Indikator einen spezifischen Kaufpunkt des Pullbacks. Sein Flip von unten nach oben gibt ein Kaufsignal.

Schließlich werden Stop-Loss und Take-Profit auf der Grundlage des ATR festgelegt.

Vorteile

  • Zuverlässigere Signale mit mehreren Indikatoren.
  • Kurzfristige Chancen in Trends mit hoher Gewinnrate erfassen.
  • Wirksame Risikokontrolle mit Stop-Loss/Take-Profit.

Risiken

  • Ein längerer Rückzug kann zu längeren Verlusten führen.
  • Mehrere Indikatoren machen das Parameter-Tuning komplex.
  • Ein zu lockerer Stop-Loss kann Verluste vergrößern.

Risikomanagement:

  • Optimieren Sie die Parameter für die Indikatorausrichtung.
  • Stopp-Loss-Anpassungen gegen große Verluste.
  • Vermeiden Sie Aktien mit längeren Rückzügen.

Optimierung

  • Versuche verschiedene Parameterkombinationen für die besten Indikatorwerte.
  • Anpassung von Stop-Loss/Take-Profit anhand der täglichen Schwankungen der Aktie.
  • Fügen Sie einen Lautstärkenanzeiger hinzu, um Fälle mit geringer Lautstärke zu vermeiden.

Schlussfolgerung

Die Strategie kombiniert mehrere Indikatoren zuverlässig zur Trend- und Pullback-Identifizierung. Ein strenger Stop-Loss-Mechanismus kontrolliert das Risiko und ermöglicht eine rechtzeitige Liquidation.


/*backtest
start: 2022-10-06 00:00:00
end: 2023-10-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="pullb", overlay = true, initial_capital = 10000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity)

//variables

///emas var
ema_src = input.source(close, "EMA Source")
ema_1 = input.int(21, 'EMA 1 len')
ema_2 = input(50, 'EMA 2 len')
ema_3 = input(200, 'EMA 3 len')

///macd var
mac_src = input.source(close, "MACD Source")
mac_1 = input.int(12, 'MACD Fast')
mac_2 = input.int(26, 'MACD Signal')
mac_3 = input.int(9, 'MACD Histogram')

///rsi var
rsi_src = input.source(close, "RSI Source")
rsi_len = input.int(14, 'RSI Len')

///stoch var
smoothK = input.int(3, "K", minval=1)
smoothD = input.int(3, "D", minval=1)
lengthRSI = input.int(14, "RSI Length", minval=1)
lengthStoch = input.int(14, "Stochastic Length", minval=1)
stoch_src = input(close, title="RSI Source Stoch")

//usage variables
ema_b = input.bool(true, "Use EMA Filter")
rsi_b = input.bool(true, "Use RSI Filter")
macd_b = input.bool(true, "Use MACD Filter")
//stoch_b = input(title="Use STOCH Filter", type=bool, defval=true)

//emaas
ema1 = ta.ema(ema_src, ema_1)
ema2 = ta.ema(ema_src, ema_2)
ema3 = ta.ema(ema_src, ema_3)

//macd
[macdLine, signalLine, histLine] = ta.macd(mac_src, mac_1, mac_2, mac_3)

//rsi
rsi = ta.rsi(rsi_src, rsi_len)

//stoch
rsi1 = ta.rsi(stoch_src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = ta.sma(k, smoothD)

//supertrend
Periods = input.int(14, "ATR Period")
src_st = input.source(close, "Supertrend Source")
Multiplier = input.float(2.0 , "ATR Multiplier")
changeATR= input.bool(true, "Change ATR Calculation Method ?")
showsignals = input.bool(true, "Show Buy/Sell Signals ?")
highlighting = input.bool(true, "Highlighter On/Off ?")
atr2 = ta.sma(ta.tr, Periods)
atr3= changeATR ? ta.atr(Periods) : atr2
up=src_st-(Multiplier*atr3)
up1 = nz(up[1],up)
up := close[1] > up1 ? math.max(up,up1) : up
dn=src_st+(Multiplier*atr3)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
buySignal = trend == 1 and trend[1] == -1
sellSignal = trend == -1 and trend[1] == 1

//conditions
///buy
rsi_cond_b = if rsi_b
    rsi >= 50
else 
    true

macd_cond_b = if macd_b
    (histLine >= 0 or histLine < histLine[1])
else
    true
ema_cond_b = if ema_b
    (ema1 > ema2 and ema2 > ema3)
else 
    true

look_for = input.int(5, "Bars from cross to signal")

stoch_signal_sum = 0
for i = 0 to (look_for)
    if k[i] > d[i] and k[i + 1] < d[i + 1] and (k[i + 1] < 20 and d[i + 1] < 20)
        stoch_signal_sum := stoch_signal_sum + 1
        
stoch_cond_b = if stoch_signal_sum > 0
    if k > 80 and d > 80
        false
    else
        true
else
    false


sup_cond_b = buySignal

buy_sig = (rsi_cond_b and macd_cond_b and ema_cond_b and stoch_cond_b and sup_cond_b)

tp_b = close + (ta.atr(14) * 3)
sl_b = close - (ta.atr(14) * 1.5)

if (buy_sig)
    strategy.entry("long", strategy.long)
    strategy.exit("exit", "long", stop = sl_b, limit = tp_b)
plot(tp_b)
plot(sl_b)



Mehr