Strategi perdagangan kuantitatif RSI indikator Double BB


Tanggal Pembuatan: 2024-01-29 10:33:43 Akhirnya memodifikasi: 2024-01-29 10:33:43
menyalin: 0 Jumlah klik: 785
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif RSI indikator Double BB

Ringkasan

Strategi ini adalah strategi perdagangan kuantitatif berdasarkan indikator Bollinger Bands dan indikator Relative Strength Index (RSI). Strategi ini menggunakan metode pembelajaran mesin, yang mengoptimalkan pengembalian data sejarah hampir 1 tahun melalui bahasa Python untuk menemukan kombinasi parameter yang optimal.

Prinsip Strategi

Sinyal perdagangan untuk strategi ini berasal dari penilaian gabungan dari Bollinger Bands ganda dan indikator RSI. Di antaranya, indikator Bollinger Bands adalah saluran fluktuasi yang dihitung berdasarkan band standar deviasi harga. Sinyal perdagangan dihasilkan ketika harga mendekati atau menyentuh saluran fluktuasi.

Secara khusus, sinyal beli dihasilkan ketika harga close out berada di bawah 1.0 standar deviasi dan RSI lebih besar dari 42. Selain itu, strategi ini juga menyiapkan dua set parameter BB dan RSI untuk posisi masuk dan stop loss. Parameter-parameter ini adalah nilai-nilai terbaik yang diperoleh melalui banyak pengulangan dan pembelajaran mesin.

Analisis Keunggulan

Keuntungan terbesar dari strategi ini adalah tingkat keakuratan parameter. Dengan metode pembelajaran mesin, setiap parameter mendapatkan rasio Sharpe terbaik setelah pengetesan secara menyeluruh. Dengan demikian, strategi ini memastikan keuntungan dan mengendalikan risiko. Selain itu, kombinasi indikator ganda juga meningkatkan akurasi dan keberhasilan sinyal.

Analisis risiko

Risiko dari strategi ini terutama berasal dari pengaturan stop loss. Jika stop loss terlalu besar, maka tidak dapat mengontrol kerugian secara efektif. Selain itu, risiko juga meningkat jika stop loss dan biaya transaksi lainnya, seperti biaya penanganan, slip point, dan lain-lain, tidak dihitung dengan benar. Untuk mengurangi risiko, disarankan untuk menyesuaikan parameter stop loss, mengurangi frekuensi perdagangan, dan menghitung posisi stop loss yang masuk akal.

Arah optimasi

Strategi ini masih memiliki ruang untuk pengoptimalan lebih lanjut. Misalnya, Anda dapat mencoba mengubah parameter panjang Bollinger Bands, atau menyesuaikan batas overbought dan oversold RSI. Selain itu, Anda juga dapat mencoba memperkenalkan indikator lain, membangun portofolio multi-indikator.

Meringkaskan

Strategi ini menggabungkan indikator BB ganda dan indikator RSI, mendapatkan parameter optimal melalui metode pembelajaran mesin, menghasilkan tingkat pengembalian yang tinggi dan tingkat risiko yang dapat dikontrol. Ini memiliki keuntungan dalam kedua aspek penilaian portofolio indikator dan pengoptimalan parameter. Dengan perbaikan terus menerus, strategi ini diharapkan menjadi strategi perdagangan kuantitatif yang unggul.

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

// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Bunghole 2020
strategy(overlay=true, shorttitle="Flawless Victory Strategy" )

// Stoploss and Profits Inputs
v1 = input(true, title="Version 1 - Doesn't Use SL/TP")
v2 = input(false, title="Version 2 - Uses SL/TP")
stoploss_input = input(6.604, title='Stop Loss %', type=input.float, minval=0.01)/100
takeprofit_input = input(2.328, title='Take Profit %', type=input.float, minval=0.01)/100
stoploss_level = strategy.position_avg_price * (1 - stoploss_input)
takeprofit_level = strategy.position_avg_price * (1 + takeprofit_input)

//SL & TP Chart Plots
plot(v2 and stoploss_input and stoploss_level ? stoploss_level: na, color=color.red, style=plot.style_linebr, linewidth=2, title="Stoploss")
plot(v2 and takeprofit_input ? takeprofit_level: na, color=color.green, style=plot.style_linebr, linewidth=2, title="Profit")

// Bollinger Bands 1
length = 20
src1 = close
mult = 1.0
basis = sma(src1, length)
dev = mult * stdev(src1, length)
upper = basis + dev
lower = basis - dev

// Bollinger Bands 2
length2 = 17
src2 = close
mult2 = 1.0
basis2 = sma(src1, length2)
dev2 = mult2 * stdev(src2, length2)
upper2 = basis2 + dev2
lower2 = basis2 - dev2

// RSI
len = 14
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)

// Strategy Parameters
RSILL= 42
RSIUL= 70
RSILL2= 42
RSIUL2= 76

rsiBuySignal = rsi > RSILL
rsiSellSignal = rsi > RSIUL
rsiBuySignal2 = rsi > RSILL2
rsiSellSignal2 = rsi > RSIUL2

BBBuySignal = src < lower
BBSellSignal = src > upper
BBBuySignal2 = src2 < lower2
BBSellSignal2 = src2 > upper2

// Strategy Long Signals
Buy = rsiBuySignal and BBBuySignal
Sell = rsiSellSignal and BBSellSignal
Buy2 = rsiBuySignal2 and BBBuySignal2
Sell2 = rsiSellSignal2 and BBSellSignal2

if v1 == true
    strategy.entry("Long", strategy.long, when = Buy, alert_message = "v1 - Buy Signal!")
    strategy.close("Long", when = Sell, alert_message = "v1 - Sell Signal!")

if v2 == true
    strategy.entry("Long", strategy.long, when = Buy2, alert_message = "v2 - Buy Signal!")
    strategy.close("Long", when = Sell2, alert_message = "v2 - Sell Signal!")
    strategy.exit("Stoploss/TP", "Long", stop = stoploss_level, limit = takeprofit_level)