
Artikel ini akan membahas strategi perdagangan kuantitatif yang menggabungkan indikator siklus parobel dengan indikator Brin untuk menetapkan strategi stop loss bergerak. Strategi ini menggunakan perhitungan garis siklus parobel untuk menentukan arah tren pasar, kemudian menggunakan dinamika tren atas dan bawah Brin untuk menetapkan posisi stop loss, sehingga memungkinkan stop loss bergerak untuk mengunci keuntungan.
Pertama, strategi ini menggunakan indikator parobel untuk menilai tren pasar saat ini. Jika harga tutup hari ini melewati garis siklus parobel kemarin, maka harga pasar akan berbalik menjadi bullish, dan jika harga tutup hari ini melewati garis siklus kemarin, maka harga pasar akan turun, dan Anda bisa melakukan trading.
Kedua, strategi ini menggabungkan stop loss dengan indikator Brin Belt yang mengatur dinamika. Jalur atas di Brin Belt dapat dianggap sebagai zona overbought dan jalur bawah sebagai zona oversold. Setelah melakukan over, jika harga kembali jatuh ke bawah Brin Belt, maka stop loss akan terjadi. Setelah melakukan gap, jika harga kembali menembus jalur atas, maka stop loss akan terjadi.
Dengan prinsip di atas, strategi ini memungkinkan untuk menentukan arah pasar sekaligus mengatur mekanisme stop loss yang dinamis untuk melacak keuntungan. Hal ini memungkinkan untuk menangkap sebagian kenaikan dan penurunan dalam tren besar, dan juga dapat mengunci keuntungan dengan stop loss, menghindari risiko.
Berbeda dengan strategi stop loss tradisional yang hanya menetapkan satu stop loss tetap, strategi ini menggunakan indikator Brin sebagai garis stop loss sehingga garis stop loss dapat bergerak seiring dengan pergerakan harga. Hal ini memungkinkan untuk mengunci lebih banyak keuntungan dalam situasi yang lebih besar. Selain itu, strategi ini menambahkan indikator Brin untuk menilai zona overbought dan oversold lebih akurat daripada menggunakan garis siklus parobel saja.
Risiko utama dari strategi ini adalah bahwa penilaian indikator parobel tidak memiliki kecenderungan yang kuat. Dalam situasi yang bergejolak, harga mungkin naik dan turun beberapa kali melintasi garis siklus parobel, sehingga strategi menghasilkan perdagangan yang sering tetapi sedikit menguntungkan. Pada saat ini, biaya perdagangan dan biaya slippage mungkin menjadi proporsi yang lebih besar, mengurangi profitabilitas strategi.
Untuk menghadapi risiko di atas, pertimbangan dapat dilakukan untuk menyesuaikan parameter, memperbesar tingkat perubahan pada garis periodik Parobel, mengurangi kemungkinan kesalahan penilaian; atau digabungkan dengan indikator lain untuk memfilter waktu masuk ke pasar. Misalnya, indikator getaran dapat ditambahkan untuk menilai apakah tren atau getaran, untuk mengurangi perdagangan yang tidak perlu.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Optimalkan parameter indikator Parobel, menyesuaikan kecepatan perubahan parameter indikator, mengurangi probabilitas kesalahan penilaian
Menambahkan filter untuk indikator teknis lainnya, seperti menambahkan MACD, KD dan lain-lain untuk menilai jenis perdagangan, untuk menghindari arbitrage di pasar yang bergoyang
Optimalkan parameter bandwidth Brin, menyesuaikan parameter bandwidth Brin agar lebih dekat dengan perubahan harga
Meningkatkan indikator kuantitatif, seperti volume transaksi, jumlah kepemilikan, dan penilaian tambahan untuk menghindari false breakout
Menggabungkan informasi dasar saham untuk menghindari masalah yang mempengaruhi kinerja strategi kepemilikan saham
Strategi ini menggunakan parameter Parobel untuk menentukan arah dan kekuatan tren pasar, kemudian menggunakan Bollinger Bands ke bawah untuk menetapkan strategi stop loss sebagai posisi stop loss bergerak. Strategi ini memungkinkan kombinasi pelacakan tren dan kontrol risiko. Dibandingkan dengan strategi stop loss tetap tradisional, strategi ini dapat menghasilkan keuntungan yang lebih tinggi dalam situasi yang lebih besar.
/*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")