Strategi Stop Loss Bergerak Bersama Tempoh Parabolik dan Bollinger Band

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

img

Ringkasan

Artikel ini akan memperkenalkan strategi perdagangan kuantitatif yang menggabungkan penunjuk tempoh parabolik dan penunjuk pita Bollinger untuk menetapkan strategi stop loss bergerak. Dengan mengira garis tempoh parabolik untuk menilai arah trend pasaran, dan kemudian menggunakan rel atas dan bawah pita Bollinger untuk menetapkan kedudukan stop loss secara dinamik, strategi merealisasikan stop loss bergerak untuk mengunci keuntungan.

Prinsip Strategi

Pertama, strategi ini menggunakan penunjuk parabolik untuk menilai trend pasaran semasa. Apabila harga penutupan hari ini melintasi di atas garis tempoh parabolik semalam, ia dianggap bahawa pasaran telah berbalik kepada kenaikan dan boleh pergi panjang; apabila harga penutupan hari ini melintasi di bawah garis tempoh, prospek pasaran adalah menurun dan boleh pergi pendek.

Kedua, strategi ini menggabungkan penunjuk Bollinger Band untuk menetapkan kedudukan stop loss dinamik. Rel atas Bollinger Band boleh dilihat sebagai zon overbought, dan rel bawah adalah zon oversold. Selepas pergi panjang, jika harga jatuh kembali di bawah rel bawah Bollinger Band, hentikan kerugian untuk menutup kedudukan; selepas pergi pendek, jika harga naik di atas rel atas lagi, hentikan kerugian untuk keluar.

Melalui prinsip-prinsip di atas, strategi ini merealisasikan menilai arah pasaran sambil menetapkan mekanisme stop loss dinamik untuk mengesan keuntungan. Ini membolehkan ia menangkap beberapa kenaikan dan penurunan dalam trend utama, sementara juga dapat mengunci keuntungan melalui stop loss untuk mengelakkan risiko.

Kelebihan Strategi

Berbanding dengan strategi stop loss tradisional yang hanya menetapkan satu kedudukan stop loss tetap, strategi ini menggunakan penunjuk band Bollinger sebagai garis stop loss, supaya garis stop loss dapat bergerak dengan turun naik harga. Ini membolehkan ia mengunci lebih banyak keuntungan dalam pergerakan yang agak besar. Di samping itu, berbanding dengan menggunakan garis tempoh parabolik sahaja, strategi ini menambah penunjuk band Bollinger untuk menentukan kawasan overbought dan oversold, yang boleh lebih tepat.

Risiko dan Penyelesaian

Risiko utama strategi ini adalah bahawa trend penunjuk parabolik tidak kuat. Di pasaran yang berayun, harga mungkin melintasi garis tempoh parabolik beberapa kali, menyebabkan perdagangan yang menguntungkan yang kerap tetapi kecil untuk strategi. Pada ketika ini, yuran transaksi dan kos geser mungkin menyumbang sebahagian besar dan mengurangkan keuntungan strategi.

Untuk mengatasi risiko di atas, parameter boleh diselaraskan untuk meningkatkan tahap perubahan dalam garis tempoh parabola untuk mengurangkan kebarangkalian penilaian yang salah; atau mempertimbangkan menggabungkan penunjuk lain untuk menapis masa kemasukan.

Pengoptimuman Strategi

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan parameter penunjuk parabola untuk menyesuaikan kadar perubahan penunjuk untuk mengurangkan kebarangkalian pertimbangan yang salah

  2. Meningkatkan penapisan penunjuk teknikal lain, seperti menambah MACD, KD untuk menentukan jenis pasaran, mengelakkan arbitrage dalam pasaran berayun

  3. Mengoptimumkan parameter Bollinger Band untuk menyesuaikan parameter lebar jalur untuk membuat Bollinger Bands melekat lebih dekat dengan perubahan harga

  4. Meningkatkan penunjuk jumlah, seperti jumlah dagangan, kedudukan untuk membantu menilai untuk mengelakkan pecah palsu

  5. Menggabungkan asas saham untuk mengelakkan masalah dengan pendapatan strategi saham memegang

Ringkasan

Strategi ini menggabungkan menilai arah trend pasaran dan kekuatan dengan penunjuk parabolik, dan kemudian menggunakan rel atas dan bawah Bollinger Bands sebagai kedudukan stop loss bergerak untuk menetapkan strategi stop loss, mencapai gabungan pengesanan trend dan kawalan risiko. Berbanding dengan strategi stop loss tetap tradisional, strategi ini dapat mencapai pulangan yang lebih tinggi dalam pergerakan yang lebih besar. Dengan mengoptimumkan parameter dan menambah penunjuk penilaian tambahan lain, kestabilan strategi dapat ditingkatkan dan perdagangan yang tidak perlu dikurangkan.


/*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 lanjut