Quant Bitcoin Trading Strategy Menggabungkan MACD, RSI dan FIB

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

img

Ringkasan

Strategi ini dinamakan Strategi Fibonacci Salib Emas. Ia menggabungkan penunjuk teknikal MACD, indeks kekuatan relatif RSI dan teori retracement / sambungan fibonacci berdasarkan nisbah emas, merealisasikan perdagangan kuantitatif untuk bitcoin dan cryptocurrency lain.

Prinsip Strategi

  1. Indikator MACD untuk Isyarat Dagangan
  • Tetapkan tempoh EMA garis cepat dan garis perlahan MACD kepada 15 dan 30
  • Menyambung sebagai isyarat membeli dan menyambung sebagai satu jualan
  1. RSI Menyaring Isyarat Palsu
  • Tetapkan parameter RSI kepada 50 tempoh
  • RSI membantu menapis beberapa isyarat palsu yang diberikan oleh MACD
  1. Teori Fibonacci untuk sokongan / rintangan
  • Gabungkan harga tertinggi / terendah baru-baru ini di 38 lilin
  • Mengira tahap penyusutan semula/peluasan 0,5 fibonacci
  • Boleh digunakan sebagai sokongan dan rintangan
  1. MA dan RSI Menghakimi Terlampau Dijual/Terlampau Dibeli
  • Pengadil MA 50 tempoh status oversold/overbought
  • RSI juga membantu menilai
  1. Mekanisme pembukaan terbalik
  • Menyediakan pilihan bagi pengguna untuk membuka pesanan terbalik
  • Sesuaikan logik panjang/pendek mengikut pilihan pengguna

Analisis Kelebihan

Kelebihan terbesar adalah beroperasi 24x7 tanpa campur tangan manual. Di samping itu, gabungan pelbagai penunjuk meningkatkan kadar kemenangan, terutamanya prestasi cemerlang dalam pasaran lembu. Kelebihan utama termasuk:

  1. Perdagangan kuantiti sepenuhnya automatik 24x7 tanpa campur tangan manual
  2. Isyarat dagangan yang tepat dari MACD
  3. RSI menapis beberapa isyarat palsu
  4. Teori Fibonacci menambah lebih banyak rujukan
  5. Menghakimi status terlalu banyak dijual/terlalu banyak dibeli
  6. Sesuaikan strategi secara fleksibel melalui pembukaan terbalik

Analisis Risiko

Terdapat juga beberapa risiko, terutamanya daripada pembalikan harga yang besar yang sukar untuk menghentikan kerugian berlaku.

  1. Hentikan kehilangan terlalu ketat untuk melindungi daripada kebalikan besar
  2. Risiko sistematik daripada tempoh penahanan yang terlalu lama

Penyelesaiannya adalah:

  1. Tetapkan jarak stop loss longgar
  2. Mengoptimumkan tempoh pegangan terhadap risiko yang terlalu lama

Arahan pengoptimuman

Aspek utama untuk pengoptimuman:

  1. Mengoptimumkan parameter MACD untuk ketepatan yang lebih tinggi
  2. Mengoptimumkan parameter RSI untuk kegunaan yang lebih baik
  3. Uji lebih banyak tempoh teori Fibonacci
  4. Tambah lebih banyak penunjuk penapis untuk mengurangkan lagi isyarat palsu
  5. Gabungkan penunjuk tempoh yang lebih besar untuk trend pasaran

Ringkasan

Strategi ini menggabungkan beberapa penunjuk kuant untuk isyarat perdagangan dan merealisasikan perdagangan kripto automatik sepenuhnya. Meningkatkan keuntungan dengan mengoptimumkan parameter dan menambah lebih banyak penunjuk pembantu. Ia mengurangkan kos operasi manual untuk pengguna dengan ketara. Bernilai penyelidikan mendalam dan aplikasi untuk peniaga 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 lanjut