Artikel ini akan memperkenalkan strategi perdagangan kuantitatif yang menggabungkan indikator periode parabola dan indikator Bollinger Band untuk mengatur strategi stop loss bergerak. Dengan menghitung garis periode parabola untuk menilai arah tren pasar, dan kemudian menggunakan rel atas dan bawah dari Bollinger Band untuk secara dinamis mengatur posisi stop loss, strategi mewujudkan stop loss bergerak untuk mengunci keuntungan.
Pertama, strategi ini menggunakan indikator parabola untuk menilai tren pasar saat ini. Ketika harga penutupan hari ini melintasi di atas garis periode parabola kemarin, dianggap bahwa pasar telah berbalik ke bullish dan dapat pergi panjang; ketika harga penutupan hari ini melintasi di bawah garis periode, prospek pasar menurun dan dapat pergi pendek.
Kedua, strategi ini menggabungkan indikator Bollinger Band untuk menetapkan posisi stop loss dinamis. rel atas Bollinger Band dapat dilihat sebagai zona overbought, dan rel bawah adalah zona oversold. Setelah pergi panjang, jika harga jatuh kembali di bawah rel bawah Bollinger Band, stop loss untuk menutup posisi; setelah pergi pendek, jika harga naik di atas rel atas lagi, stop loss untuk keluar. Dengan demikian, rel atas dan bawah Bollinger Band menjadi bergerak stop loss line.
Melalui prinsip-prinsip di atas, strategi ini mewujudkan menilai arah pasar sambil menetapkan mekanisme stop loss dinamis untuk melacak keuntungan. Hal ini memungkinkan untuk menangkap beberapa naik turun dalam tren utama, sementara juga mampu mengunci keuntungan melalui stop loss untuk menghindari risiko.
Dibandingkan dengan strategi stop loss tradisional yang hanya menetapkan satu posisi stop loss tetap, strategi ini menggunakan indikator Bollinger band sebagai garis stop loss, sehingga garis stop loss dapat bergerak dengan fluktuasi harga. Hal ini memungkinkan untuk mengunci lebih banyak keuntungan dalam pergerakan yang relatif besar. Selain itu, dibandingkan dengan menggunakan garis periode parabolik saja, strategi ini menambahkan indikator Bollinger band untuk menentukan area overbought dan oversold, yang dapat lebih akurat.
Risiko utama dari strategi ini adalah bahwa tren indikator parabola tidak kuat. Di pasar osilasi, harga dapat melintasi garis periode parabola beberapa kali, menyebabkan perdagangan menguntungkan yang sering tetapi kecil untuk strategi. Pada titik ini, biaya transaksi dan biaya geser dapat menyumbang sebagian besar dan mengurangi profitabilitas strategi.
Untuk mengatasi risiko di atas, parameter dapat disesuaikan untuk meningkatkan tingkat perubahan pada garis periode parabola untuk mengurangi kemungkinan penilaian yang salah; atau mempertimbangkan menggabungkan indikator lain untuk menyaring waktu masuk.
Strategi ini dapat dioptimalkan dalam aspek berikut:
Mengoptimalkan parameter indikator parabola untuk menyesuaikan tingkat perubahan indikator untuk mengurangi kemungkinan penilaian yang salah
Meningkatkan penyaringan indikator teknis lainnya, seperti menambahkan MACD, KD untuk menentukan jenis pasar, menghindari arbitrase di pasar osilasi
Mengoptimalkan parameter Bollinger Band untuk menyesuaikan parameter bandwidth untuk membuat Bollinger Bands tetap dekat dengan perubahan harga
Meningkatkan indikator volume, seperti volume perdagangan, posisi untuk membantu menilai untuk menghindari kegagalan palsu
Menggabungkan dasar-dasar saham untuk menghindari masalah dengan keuntungan dari strategi kepemilikan saham
Strategi ini menggabungkan menilai arah tren pasar dan kekuatan dengan indikator parabola, dan kemudian menggunakan rel atas dan bawah Bollinger Bands sebagai posisi stop loss bergerak untuk mengatur strategi stop loss, mencapai kombinasi pelacakan tren dan pengendalian risiko. Dibandingkan dengan strategi stop loss tetap tradisional, strategi ini dapat mencapai pengembalian yang lebih tinggi dalam pergerakan yang lebih besar. Dengan mengoptimalkan parameter dan menambahkan indikator penilaian tambahan lainnya, stabilitas strategi dapat ditingkatkan lebih lanjut dan perdagangan yang tidak perlu dikurangi.
/*backtest start: 2024-01-02 00:00:00 end: 2024-02-01 00:00:00 period: 3h basePeriod: 15m 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/ // © maxencetajet //@version=5 strategy("HA_RSI", overlay=true, initial_capital=1000, default_qty_type=strategy.fixed, default_qty_value=0.5, slippage=25) closeHA = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close) useDateFilter = input.bool(true, title="Filter Date Range of Backtest", group="Backtest Time Period") backtestStartDate = input(timestamp("5 June 2022"), title="Start Date", group="Backtest Time Period", tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") backtestEndDate = input(timestamp("5 July 2022"), title="End Date", group="Backtest Time Period", tooltip="This end date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") inTradeWindow = true swingHighV = input.int(10, title="Swing High", group="number of past candles") swingLowV = input.int(10, title="Swing Low", group="number of past candles") emaV = input.int(200, title="Ema Period", group="EMA") rsiV = input.int(14, title="RSI Period", group="RSI") start = input(0.02, group="Parabolic SAR") increment = input(0.02, group="Parabolic SAR") maximum = input(0.2, "Max Value", group="Parabolic SAR") ema = ta.ema(closeHA, emaV) rsi = ta.rsi(closeHA, rsiV) SAR = ta.sar(start, increment, maximum) myColor = SAR < low?color.green:color.red longcondition = closeHA > ema and rsi > 50 and closeHA[1] > SAR and closeHA[1] < SAR[1] shortcondition = closeHA < ema and rsi < 50 and closeHA[1] < SAR and closeHA[1] > SAR[1] float risk_long = na float risk_short = na float stopLoss = na float entry_price = na float takeProfit = na risk_long := risk_long[1] risk_short := risk_short[1] swingHigh = ta.highest(closeHA, swingHighV) swingLow = ta.lowest(closeHA, swingLowV) if strategy.position_size == 0 and longcondition and inTradeWindow risk_long := (close - swingLow) / close strategy.entry("long", strategy.long, comment="Buy") if strategy.position_size == 0 and shortcondition and inTradeWindow risk_short := (swingHigh - close) / close strategy.entry("short", strategy.short, comment="Sell") if strategy.position_size > 0 stopLoss := strategy.position_avg_price * (1 - risk_long) entry_price := strategy.position_avg_price strategy.exit("long exit", "long", stop = stopLoss) if strategy.position_size < 0 stopLoss := strategy.position_avg_price * (1 + risk_short) entry_price := strategy.position_avg_price strategy.exit("short exit", "short", stop = stopLoss) if closeHA[1] < SAR and close > strategy.position_avg_price strategy.close("long", comment="Exit Long") if closeHA[1] > SAR and close < strategy.position_avg_price strategy.close("short", comment="Exit Short") p_ep = plot(entry_price, color=color.new(color.white, 0), linewidth=2, style=plot.style_linebr, title='entry price') p_sl = plot(stopLoss, color=color.new(color.red, 0), linewidth=2, style=plot.style_linebr, title='stopLoss') fill(p_sl, p_ep, color.new(color.red, transp=85)) plot(SAR, "ParabolicSAR", style=plot.style_circles, color=myColor, linewidth=1) plot(ema, color=color.white, linewidth=2, title="EMA")