MA Trendline Durchbruchstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-30
Tags:

img

Diese Strategie ermöglicht eine kontinuierliche Rentabilität in volatilen Märkten, indem sie gleitende Durchschnittslinie-Durchbrüche verfolgt.

Strategie Logik

Die Kernlogik dieser Strategie besteht darin, Positionen basierend auf gleitenden Durchschnittslinien zu eröffnen. Es verwendet MA, um mehrere gleitende Durchschnitte zu aggregieren, um die Hauptgleitende Durchschnittslinie zu bilden. Handelssignale werden generiert, wenn der Preis die Hauptgleitende Durchschnittslinie durchbricht.

Insbesondere setzt die Strategie einen 60-Perioden-WMA-Doppel gleitenden Durchschnitt als Hauptgleitenden Durchschnittslinie ein. Gleichzeitig berechnet sie den wahren Bereich des Preises und zieht obere und untere Bands.

Neben den Durchbruchssignalen beinhaltet die Strategie auch RSI und EMA als Hilfsindikatoren. Sie erfordert, dass RSI>50 und Preis über EMA lang gehen und RSI<50 und Preis unter EMA kurz gehen, um falsche Ausbrüche zu vermeiden.

Darüber hinaus verwendet die Strategie dreifache gleitende Durchschnittsformationen, um Ausgangspunkte zu bestimmen.

Analyse der Vorteile

  • Mit Hilfe von MA, um Preisschwankungen zu verringern, kann es effektiv Trendrichtungen erkennen
  • Der Handel auf der Grundlage von Kanal-Breakouts kann anständige Gewinne auf den Märkten mit Bandbreite erzielen
  • Kombination von RSI und EMA verhindert falsche Ausbruchssignale
  • Die Verwendung von dreifachen MA-Formationen zur Bestimmung von Ausgangspunkten verhindert erschöpfte Trends

Risikoanalyse

  • MA-Linien können in stark schwankenden Märkten viele falsche Ausbrüche erzeugen
  • Die Ausgangszeiten für die dreifache MA sind möglicherweise nicht sehr genau
  • Unzulässige RSI-Parameter können zu einem Überhandel führen

Diese Risiken können durch Optimierung der MA-Perioden, Anpassung der dreifachen MA-Einstellungen, vorsichtige Verwendung des RSI usw. verringert werden.

Optimierungsrichtlinien

  • Optimierung von MA-Perioden zur Suche nach besseren Einstellungen für die Hauptglittende Durchschnittslinie
  • Versuchen Sie, verschiedene Hilfsindikatoren anstelle des RSI zu verwenden, z. B. KDJ, MACD usw.
  • Anpassung der dreifachen MA-Parameter zur präziseren Identifizierung der Umkehrpunkte
  • Zusatz von Stop Loss zum Kontrollrisiko pro Handel

Zusammenfassung

Zusammenfassend ist dies eine ausgezeichnete Breakout-Strategie für Bereichsgebundene Märkte. Die Kernidee besteht darin, Positionen auf der Grundlage von MA-Breakouts zu eröffnen, die durch Trendindikatoren gefiltert werden, und stabile Gewinne in nicht-trendigen Märkten zu erzielen. Die Ausgänge werden früher mit Hilfe von dreifachen MA-Formationen bestimmt. Es gibt viel Raum für die Optimierung von Parametern, die Verbesserung der Eintritts-/Ausgangslogik usw., um die Performance in den Bereichsmärkten zu maximieren.


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



//@version=5

//exapple bot
strategy('RIPO BOT', shorttitle='RIPO BOT', overlay=true, process_orders_on_close=true, calc_on_order_fills=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
sl_inp = input(0.1, title='Stop Loss %') / 100
tp_inp = input(0.33, title='Take Profit %') / 100

length = input(defval=21)
upper = ta.highest(length)
lower = ta.lowest(length)

lengthChop = input.int(14, minval=1)
ci = 100 * math.log10(math.sum(ta.atr(1), lengthChop) / (ta.highest(lengthChop) - ta.lowest(lengthChop))) / math.log10(lengthChop)
offset = input.int(0, "Offset",  minval = -500, maxval = 500)
plot(ci, "CHOP", color=#2962FF, offset = offset)
band1 = hline(61.8, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
hline(50, "Middle Band", color=color.new(#787B86, 50))
band0 = hline(38.2, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
fill(band1, band0, color = color.rgb(33, 150, 243, 90), title = "Background")

rsi = ta.rsi(close, 14)

var float entry_price = na

output = 100 * (close - upper) / (upper - lower)
ema = ta.ema(output, input(defval=13, title='EMA'))

ma(src, len) =>
    ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len), math.round(math.sqrt(len)))
BBMC = ma(close, 60)
rangema = ta.ema(ta.tr, 60)
upperk = BBMC + rangema * 0.2
lowerk = BBMC - rangema * 0.2
color_bar = close > upperk ? color.blue : close < lowerk ? color.fuchsia : color.gray

ExitHigh = ma(high, 15)
ExitLow = ma(low, 15)
Hlv3 = int(na)
Hlv3 := close > ExitHigh ? 1 : close < ExitLow ? -1 : Hlv3[1]
sslExit = Hlv3 < 0 ? ExitHigh : ExitLow
base_cross_Long = ta.crossover(close, sslExit)
base_cross_Short = ta.crossover(sslExit, close)
codiff = base_cross_Long ? 1 : base_cross_Short ? -1 : na
entry_long = false

entry_short = false

    
if ta.crossover(close, BBMC) and output > ema
    entry_long := true
    
if ta.crossunder(close, BBMC) and output < ema
    entry_short := true

if entry_long and strategy.position_size == 0
    entry_price := close
    strategy.entry('enter long', strategy.long, comment='ENTER-LONG_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
if strategy.position_size > 0
    strategy.exit('Stop Loss/TP long', 'enter long', limit=entry_price * (1 + tp_inp), stop = color_bar == color.fuchsia ? BBMC : na, comment='EXIT-LONG_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
plot(entry_price * (1 + tp_inp), color=color.new(color.green, 0))


//if entry_short and strategy.position_size == 0
    //entry_price := close
    //strategy.entry('enter short', strategy.short, comment='ENTER-SHORT_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
if strategy.position_size < 0
    strategy.exit('Stop Loss/TP short', 'enter short', limit=entry_price * (1 - tp_inp), stop = color_bar == color.blue ? BBMC : na, comment='EXIT-SHORT_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
plot(entry_price * (1 + tp_inp), color=color.new(color.green, 0))
// plot(entry_price * (1 - sl_inp), color=color.new(color.red, 0))

plot(rsi, color=color.yellow)

plot(output, title='%R', color=color.new(color.yellow, 0), linewidth=2)
plot(ema, title='EMA', color=color.new(color.aqua, 0), linewidth=2)

plotarrow(codiff, colorup=color.new(color.blue, 35), colordown=color.new(color.fuchsia, 35), title='Exit Arrows', maxheight=20, offset=0)
plot(BBMC, color=color_bar, linewidth=4, title='MA Trendline')





Mehr