Strategi Perdagangan Bitcoin Quant Menggabungkan MACD, RSI dan FIB

Penulis:ChaoZhang, Tanggal: 2023-12-26 17:08:03
Tag:

img

Gambaran umum

Strategi ini disebut Golden Cross Fibonacci Strategy. Ini menggabungkan indikator teknis MACD, indeks kekuatan relatif RSI dan teori retracement / ekstensi fibonacci berdasarkan rasio emas, mewujudkan perdagangan kuantitatif untuk bitcoin dan cryptocurrency lainnya.

Prinsip Strategi

  1. Indikator MACD untuk sinyal perdagangan
  • Atur periode EMA dari garis cepat MACD dan garis lambat menjadi 15 dan 30
  • Menjelajahi atas sebagai sinyal membeli dan menjelajahi bawah sebagai menjual satu
  1. RSI Menyaring Sinyal Palsu
  • Atur parameter RSI ke periode 50
  • RSI membantu menyaring beberapa sinyal palsu yang diberikan MACD
  1. Teori Fibonacci untuk SUPPORT/RESISTANCE
  • Gabungkan harga tertinggi / terendah terbaru di 38 lilin
  • Menghitung tingkat retracement/ekstensi 0,5 fibonacci
  • Dapat digunakan sebagai dukungan dan resistensi
  1. MA dan RSI Menghakimi Oversold/Overbought
  • 50 periode MA menilai status oversold/overbought
  • RSI juga membantu menilai
  1. Mekanisme pembukaan terbalik
  • Berikan pilihan bagi pengguna untuk membuka order terbalik
  • Fleksibel menyesuaikan logika panjang/pendek sesuai dengan pilihan pengguna

Analisis Keuntungan

Keuntungan terbesarnya adalah beroperasi 24x7 tanpa intervensi manual. Selain itu, kombinasi dari beberapa indikator meningkatkan tingkat kemenangan, terutama kinerja yang luar biasa di pasar bull. Keuntungan utama meliputi:

  1. Perdagangan kuantitatif 24x7 sepenuhnya otomatis tanpa intervensi manual
  2. Sinyal perdagangan yang akurat dari MACD
  3. RSI menyaring beberapa sinyal palsu
  4. Teori Fibonacci menambah referensi
  5. Penilaian status oversold/overbought
  6. Fleksibel menyesuaikan strategi melalui pembukaan terbalik

Analisis Risiko

Ada juga beberapa risiko, terutama dari pembalikan harga yang sangat besar yang sulit untuk stop loss untuk berlaku.

  1. Stop loss terlalu ketat untuk melindungi dari kebalikan besar
  2. Risiko sistematis dari periode kepemilikan yang terlalu lama

Solusi yang sesuai adalah:

  1. Setel jarak stop loss yang longgar
  2. Mengoptimalkan periode penahanan terhadap risiko yang terlalu lama

Arahan Optimasi

Aspek utama untuk optimasi:

  1. Mengoptimalkan parameter MACD untuk akurasi yang lebih tinggi
  2. Mengoptimalkan parameter RSI untuk utilitas yang lebih baik
  3. Uji lebih banyak periode teori Fibonacci
  4. Tambahkan lebih banyak indikator filter untuk lebih mengurangi sinyal palsu
  5. Gabungkan indikator periode yang lebih besar untuk tren pasar

Ringkasan

Strategi ini menggabungkan beberapa indikator kuant untuk sinyal perdagangan dan mewujudkan perdagangan crypto otomatis penuh. Lebih lanjut meningkatkan keuntungan dengan mengoptimalkan parameter dan menambahkan lebih banyak indikator asisten. Hal ini secara signifikan mengurangi biaya operasi manual bagi pengguna. Layak penelitian mendalam dan aplikasi untuk pedagang kuant.


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




Lebih banyak