Quant Bitcoin Trading Strategie, die MACD, RSI und FIB kombiniert

Schriftsteller:ChaoZhang, Datum: 2023-12-26 17:08:03
Tags:

img

Übersicht

Die Strategie trägt den Namen Golden Cross Fibonacci Strategy. Sie kombiniert den technischen Indikator MACD, den Relative Strength Index RSI und die Fibonacci-Retracement/Extension-Theorie basierend auf dem goldenen Verhältnis, um einen quantitativen Handel für Bitcoin und andere Kryptowährungen zu realisieren.

Strategieprinzip

  1. MACD-Indikator für Handelssignale
  • EMA-Perioden der schnellen und der langsamen MACD-Linie auf 15 und 30 setzen
  • Aufsteigen als Kaufsignal und Absteigen als Verkauf
  1. RSI filtert falsche Signale
  • RSI-Parameter auf 50 Periode setzen
  • Der RSI hilft, einige falsche Signale zu filtern, die der MACD gibt.
  1. Fibonacci-Theorie für Unterstützung/Widerstand
  • Kombination des jüngsten Höchst-/Niedrigstpreises über 38 Kerzen
  • Berechnen Sie den Fibonacci-Retracement-/Erweiterungsgrad von 0,5
  • Kann als Unterstützung und Widerstand verwendet werden
  1. MA und RSI Beurteilung von Überverkauf/Überkauf
  • Überverkauft/übergekauft
  • RSI hilft auch bei der Beurteilung
  1. Umgekehrter Öffnungsmechanismus
  • Bereitstellung der Möglichkeit für Benutzer, eine Umkehrbestellung zu eröffnen
  • Flexible Anpassung der langen/kurzen Logik nach Wahl der Benutzer

Analyse der Vorteile

Der größte Vorteil besteht darin, 24x7 ohne manuelle Eingriffe zu arbeiten. Außerdem erhöht die Kombination mehrerer Indikatoren die Gewinnrate, insbesondere eine hervorragende Leistung im Bullenmarkt.

  1. Voll automatisierter 24x7 Quant-Trading ohne manuelle Intervention
  2. Genaue Handelssignale des MACD
  3. RSI filtert einige falsche Signale
  4. Fibonacci-Theorie fügt mehr Referenz hinzu
  5. Beurteilung des Überverkaufs/Überkaufs
  6. Flexible Anpassung der Strategien durch Umkehröffnung

Risikoanalyse

Es gibt auch einige Risiken, hauptsächlich durch einen riesigen Preisumschwung, bei dem es schwierig ist, einen Stop-Loss auszuüben.

  1. Stop-Loss zu eng, um vor einem riesigen Rückschlag zu schützen
  2. Systematisches Risiko aus einer zu langen Haltedauer

Die Lösungen sind folgendermaßen:

  1. Setzen Sie die Entfernung zum Lose-Stop-Loss
  2. Optimierung der Haltedauer gegen ein zu langes Risiko

Optimierungsrichtlinien

Hauptaspekte der Optimierung:

  1. Optimierung der MACD-Parameter für eine höhere Genauigkeit
  2. Optimieren Sie den RSI-Parameter für einen besseren Nutzen
  3. Test mehr Perioden der Fibonacci-Theorie
  4. Hinzufügen von mehr Filterindikatoren, um falsche Signale weiter zu verringern
  5. Kombination von Indikatoren für größere Zeiträume für die Marktentwicklung

Zusammenfassung

Die Strategie kombiniert mehrere Quant-Indikatoren für Handelssignale und realisiert den vollautomatischen Krypto-Handel. Er verbessert den Gewinn durch Optimierung von Parametern und Hinzufügen von mehr Assistenzindikatoren. Es reduziert die manuellen Betriebskosten für die Benutzer erheblich. Es lohnt sich, tiefgreifende Forschung und Anwendung für Quant-Händler durchzuführen.


/*backtest
start: 2023-12-18 00:00:00
end: 2023-12-25 00:00:00
period: 10m
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/
// © onurenginogutcu

//@version=4
strategy("STRATEGY R18-F-BTC", overlay=true, margin_long=100, margin_short=100)

///////////default girişler 1 saatlik btc grafiği için geçerli olmak üzere - stop loss'lar %2.5 - long'da %7.6 , short'ta %8.1

sym = input(title="Symbol", type=input.symbol, defval="BINANCE:BTCUSDT") /////////btc'yi indikatör olarak alıyoruz

lsl = input(title="Long Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5) * 0.01
     
ssl = input(title="Short Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5) * 0.01
     
longtp = input(title="Long Take Profit (%)",
     minval=0.0, step=0.1, defval=7.6) * 0.01
     
shorttp = input(title="Short Take Profit (%)",
     minval=0.0, step=0.1, defval=7.5) * 0.01
     
capperc = input(title="Capital Percentage to Invest (%)",
     minval=0.0, maxval=100, step=0.1, defval=90) * 0.01
     
choice = input(title="Reverse ?", type=input.bool, defval=false)

symClose = security(sym, "", close)
symHigh = security(sym, "", high)
symLow = security(sym, "", low)

i = ema (symClose , 15) - ema (symClose , 30) ///////// ema close 15 ve 30 inanılmaz iyi sonuç verdi (macd standartı 12 26)
r = ema (i , 9)

sapust = highest (i , 100) * 0.729 //////////0.729 altın oran oldu 09.01.2022
sapalt = lowest (i , 100) * 0.729  //////////0.729 altın oran oldu 09.01.2022

///////////highx = highest (close , 365) * 0.72 fibo belki dahiledilebilir
///////////lowx = lowest (close , 365) * 1.272 fibo belki dahil edilebilir
simRSI = rsi (symClose , 50 ) /////// RSI DAHİL EDİLDİ "50 MUMLUK RSI EN İYİ SONUCU VERİYOR"


//////////////fibonacci seviyesi eklenmesi amacı ile koyuldu fakat en iyi sonuç %50 seviyesinin altı ve üstü (low ve high 38 barlık) en iyi sonuç verdi
fibvar = 38
fibtop = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
fibbottom = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)

///////////////////////////////////////////////////////////// INDICATOR CONDITIONS

longCondition = crossover(i, r) and i < sapalt and symClose < sma (symClose , 50) and simRSI < sma (simRSI , 50) and symClose < fibbottom
shortCondition = crossunder(i, r) and i > sapust and symClose > sma (symClose , 50) and simRSI > sma (simRSI , 50)  and symClose > fibtop

////////////////////////////////////////////////////////////////

///////////////////////////////////////////STRATEGY ENTRIES AND STOP LOSSES /////stratejilerde kalan capital için strategy.equity kullan (bunun üzerinden işlem yap)


if (choice == false and longCondition)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close ,   when = strategy.position_size == 0)
   

if (choice == false and shortCondition)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close ,  when = strategy.position_size == 0)

if (choice == true and longCondition)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close ,  when = strategy.position_size == 0)

if (choice == true and shortCondition)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close ,   when = strategy.position_size == 0)
    

if (strategy.position_size > 0)
    strategy.exit("Exit Long", "Long", stop=strategy.position_avg_price*(1 - lsl) , limit=strategy.position_avg_price*(1 + longtp))

if (strategy.position_size < 0)
    strategy.exit("Exit Short", "Short", stop=strategy.position_avg_price*(1 + ssl) , limit=strategy.position_avg_price*(1 - shorttp))


////////////////////////vertical colouring signals
bgcolor(color=longCondition ? color.new (color.green , 70) : na)
bgcolor(color=shortCondition ? color.new (color.red , 70) : na)




Mehr