Strategi Stop Loss Moving Periode Parabolik dan Bollinger Band

Penulis:ChaoZhang, Tanggal: 2024-02-02 11:05:57
Tag:

img

Gambaran umum

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.

Prinsip Strategi

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.

Keuntungan dari Strategi

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 dan Solusi

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.

Optimasi Strategi

Strategi ini dapat dioptimalkan dalam aspek berikut:

  1. Mengoptimalkan parameter indikator parabola untuk menyesuaikan tingkat perubahan indikator untuk mengurangi kemungkinan penilaian yang salah

  2. Meningkatkan penyaringan indikator teknis lainnya, seperti menambahkan MACD, KD untuk menentukan jenis pasar, menghindari arbitrase di pasar osilasi

  3. Mengoptimalkan parameter Bollinger Band untuk menyesuaikan parameter bandwidth untuk membuat Bollinger Bands tetap dekat dengan perubahan harga

  4. Meningkatkan indikator volume, seperti volume perdagangan, posisi untuk membantu menilai untuk menghindari kegagalan palsu

  5. Menggabungkan dasar-dasar saham untuk menghindari masalah dengan keuntungan dari strategi kepemilikan saham

Ringkasan

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")

Lebih banyak