Strategie zur Feinabstimmung des Trend-Pullbacks


Erstellungsdatum: 2023-10-13 15:49:29 zuletzt geändert: 2023-10-13 15:49:29
Kopie: 0 Klicks: 816
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Strategie zielt darauf ab, kleine Rückschläge in einem Trend zu erfassen und am Ende eines Rückschritts mehr Positionen zu eröffnen, um einen Gewinn zu erzielen. Sie verwendet technische Indikatoren wie die EMA, den MACD-Indikator, den RSI-Indikator, um den Trend und das Ende des Rückschritts zu bestimmen, und verwendet den ATR-Indikator, um einen Stop-Loss-Preis zu setzen.

Grundsätze

Die Strategie berechnet zunächst die EMA, den MACD und den RSI, um die Richtung und Stärke des aktuellen Trends zu bestimmen.

Es verwendet drei EMA-Mittellinien (kurze 21-Zyklen, mittlere 50-Zyklen, lange 200-Zyklen) und wird als Aufwärtstrend beurteilt, wenn zwei mittlere Linien auf der kurzfristigen Mittellinie durchschritten werden.

Der MACD-Indikator beurteilt die Stärke des Trends, wenn die MACD-Linie oder die Histo-Säule die 0-Achse durchschreitet, wird angenommen, dass der Aufwärtstrend stärker wird.

Der RSI-Indikator beurteilt die Überhitzung und den Überverkauf, und der Rückgang kann beendet werden, wenn der RSI-Wert über 50 liegt.

Der SuperTrend-Indikator wird dann verwendet, um einen spezifischen Rückkauf zu bestimmen. Wenn der SuperTrend von unten nach oben umkehrt, wird ein Kaufsignal erzeugt.

Schließlich wurde ein Rücknahme-Stopp und ein Gewinn-Stopp-Preis auf Basis des ATR-Indikators festgelegt.

Vorteile

  • Die Verwendung einer Kombination aus mehreren Indikatoren macht die Handelssignale zuverlässiger.
  • Es ist eine gute Gelegenheit, die kurze Linie im Trend zu erfassen, mit einer hohen Gewinnrate.
  • Einrichtung von Schadensbegrenzungsmechanismen zur effektiven Risikokontrolle.

Die Gefahr

  • Eine zu lange Rücksendezeit kann zu einer Vergrößerung der Verluste führen.
  • Mehrfache Kennzahlen, komplexe Parameter-Einstellungen, wiederholte Tests und Optimierungen.
  • Die Stop-Loss-Einstellungen sind zu locker, die Verluste können sich ausweiten.

Risikomanagementmaßnahmen:

  • Optimierung der Parameter und Sicherstellung der ordnungsgemäßen Verwendung der Kennzahlen.
  • Stellstopppunkte werden entsprechend angepasst, um zu große Verluste zu vermeiden.
  • Vermeiden Sie Aktien, die zu lange zurückgeschickt werden.

Optimierungsrichtung

  • Verschiedene Kombinationen von Parametern werden getestet, um den optimalen Zustand des Indikators zu finden.
  • Die Stop-Loss-Stopp-Einstellung wird in Verbindung mit der Tagesfluktuation der Aktien angepasst.
  • Es ist wichtig, dass die Preise für die Produktion der Produkte in der gesamten Region angepasst werden, damit die Kapazitätsmängel nicht auftreten.

Zusammenfassen

Die Strategie nutzt mehrere technische Indikatoren, um Trends und Rückschläge zu beurteilen. Die Strategie hat eine hohe Zuverlässigkeit. Die Risiken werden durch strenge Stop-Loss-Mechanismen kontrolliert.

Strategiequellcode
/*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)