Strategi perdagangan kuantitatif berdasarkan Bollinger Bands dan RSI


Tanggal Pembuatan: 2023-12-20 15:39:19 Akhirnya memodifikasi: 2023-12-20 15:39:19
menyalin: 0 Jumlah klik: 679
1
fokus pada
1621
Pengikut

Strategi perdagangan kuantitatif berdasarkan Bollinger Bands dan RSI

Ringkasan

Strategi ini dirancang berdasarkan Brin band dan indikator yang relatif kuat (RSI) untuk strategi perdagangan kuantitatif. Strategi ini menggabungkan pelacakan tren dan penilaian overbought oversold untuk memasuki pasar pada tahap awal tren dan keluar dari overbought oversold untuk mencapai keuntungan.

Prinsip Strategi

Strategi ini menggunakan Bollinger Bands untuk menilai tren harga dan mendukung resistensi. Ketika harga mendekati Bollinger Bands down, ini dianggap sebagai sinyal oversold; Ketika harga mendekati Bollinger Bands up, ini dianggap sebagai sinyal overbought.

Aturan perdagangan yang spesifik adalah: melakukan over entry ketika harga lebih rendah dari Bollinger Bands down dan RSI lebih rendah dari 30; melakukan entry dengan posisi kosong ketika harga lebih tinggi dari Bollinger Bands up dan RSI lebih tinggi dari 70. Ketika berhenti Exit, pilih garis tengah Bollinger Bands atau Bollinger Bands ke arah yang berlawanan sebagai stop position. Stop loss ditetapkan sebagai persentase dari harga masuk.

Keunggulan Strategis

Strategi ini menggabungkan trend tracking di Brin Belt dan penilaian overbought dan oversold di RSI untuk lebih memahami titik awal tren. Selain itu, strategi stop and loss juga lebih jelas dan membantu manajemen risiko.

Strategi ini menggunakan berbagai indikator dan parameter secara komprehensif yang dapat meningkatkan akurasi keputusan dibandingkan dengan penggunaan indikator seperti Brinks atau RSI secara tunggal. Dengan penyesuaian parameter yang tepat, kinerja perdagangan akan lebih stabil.

Risiko Strategis

Strategi ini terutama bergantung pada optimasi parameter, dan jika parameter disetel dengan tidak benar, akan menghadapi risiko yang lebih besar. Misalnya, tidak cocoknya parameter periode Brin, mungkin akan kehilangan tren atau menghasilkan sinyal palsu. Selain itu, titik stop loss juga perlu dievaluasi dengan hati-hati.

Strategi ini juga memiliki ketergantungan pada varietas yang diperdagangkan. Untuk varietas yang lebih berfluktuasi, perlu menyesuaikan parameter Brinks. Untuk varietas yang tidak menunjukkan tren, efeknya juga akan dikurangkan. Selain itu, strategi ini juga dipengaruhi oleh biaya perdagangan, slippage, dan situasi ekstrem.

Dianjurkan untuk melakukan pengujian optimasi parameter, menilai tingkat stop loss, dan menguji kinerja dalam berbagai varietas dan lingkungan pasar. Sementara itu, cadangan dana Space untuk manajemen risiko.

Arah optimasi

Strategi ini dapat terus dioptimalkan dari beberapa arah:

  1. Mengevaluasi dan mengoptimalkan parameter BRI dan RSI agar lebih sesuai dengan karakteristik varietas yang diperdagangkan

  2. Menambahkan penilaian indikator lain, seperti KDJ, MACD, dan lain-lain, untuk membentuk model multi-faktor

  3. Evaluasi strategi stop loss, pengaturan stop loss floating atau stop loss batch

  4. Optimalisasi parameter dinamis berdasarkan varietas dan lingkungan pasar tertentu

  5. Menambahkan model pembelajaran mesin untuk menilai kualitas sinyal dan tingkat risiko

Meringkaskan

Strategi ini mengintegrasikan indikator Brin dan RSI, merancang strategi pelacakan tren yang lebih lengkap. Efektivitas dan stabilitas masih ada ruang untuk perbaikan lebih lanjut melalui pengoptimalan parameter dan manajemen risiko.

Kode Sumber Strategi
/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("BB + RSI Estrategia", overlay=true)

longitud = input(20, title="Longitud BB", minval=5, maxval=50, step=1)
multiplicador = input(2.0, title="Multiplicador BB", type=input.float, step=0.1)
timeframe_bb = input("D", title="Marco de Tiempo BB", type=input.resolution)
rsi_length = input(14, title="Longitud RSI", minval=5, maxval=50, step=1)
rsi_overbought = input(70, title="Nivel de sobrecompra RSI", minval=50, maxval=80, step=1)
rsi_oversold = input(30, title="Nivel de sobreventa RSI", minval=20, maxval=50, step=1)
take_profit = input("Central", title="Take Profit (banda)", options=["Central", "Opuesta"])
stop_loss = input(2.00, title="Stop Loss", type=input.float, step=0.10)

var SL = 0.0

[banda_central, banda_superior, banda_inferior] = security(syminfo.tickerid, timeframe_bb, bb(close, longitud, multiplicador))
rsi_value = rsi(close, rsi_length)

comprado = strategy.position_size > 0
vendido = strategy.position_size < 0

if not comprado and not vendido
    if close < banda_inferior and rsi_value < rsi_oversold
        // Realizar la compra
        cantidad = round(strategy.equity / close)
        strategy.entry("Compra", strategy.long, qty=cantidad, when=cantidad > 0)
        SL := close * (1 - (stop_loss / 100))

    if close > banda_superior and rsi_value > rsi_overbought
        // Realizar la Venta
        cantidad = round(strategy.equity / close)
        strategy.entry("Venta", strategy.short, qty=cantidad, when=cantidad > 0)
        SL := close * (1 + (stop_loss / 100))

if comprado
    // Verificar el take profit
    if take_profit == "Central" and close >= banda_central
        strategy.close("Compra", comment="TP")
        SL := 0

    if take_profit == "Opuesta" and close >= banda_superior
        strategy.close("Compra", comment="TP")
        SL := 0
    // Verificar el stop loss
    if close <= SL
        strategy.close("Compra", comment="SL")
        SL := 0

if vendido
    // Verificar el take profit
    if take_profit == "Central" and close <= banda_central
        strategy.close("Venta", comment="TP")
        SL := 0

    if take_profit == "Opuesta" and close <= banda_inferior
        strategy.close("Venta", comment="TP")
        SL := 0
    // Verificar el Stop loss
    if close >= SL
        strategy.close("Venta", comment="SL")
        SL := 0

// Salida
plot(SL > 0 ? SL : na, style=plot.style_circles, color=color.red)
g1 = plot(banda_superior, color=color.aqua)
plot(banda_central, color=color.red)
g2 = plot(banda_inferior, color=color.aqua)
fill(g1, g2, color=color.aqua, transp=97)

// Dibujar niveles de sobrecompra/sobreventa del RSI
hline(rsi_overbought, "RSI Overbought", color=color.red)
hline(rsi_oversold, "RSI Oversold", color=color.green)