Strategi Pelacakan Momentum Burst

Penulis:ChaoZhang, Tanggal: 2024-03-01 11:08:43
Tag:

img

Gambaran umum

Strategi Pelacakan Burst Momentum menilai terobosan harga dengan menghitung persentase perubahan harga dan menyaring sinyal dengan volume perdagangan untuk menerapkan kemungkinan tinggi menangkap titik terobosan tren.

Prinsip Strategi

Indikator utama yang digunakan dalam strategi ini untuk menentukan sinyal masuk adalah:

  1. Perubahan harga persentase (isFourPercentBull) - Menghitung perubahan persentase harga penutupan relatif terhadap harga penutupan hari sebelumnya untuk menentukan apakah harga telah berhasil menerobos.

  2. Rasio harga penutupan terhadap harga tertinggi (HighCloseRatio) - Menghitung rasio harga penutupan terhadap harga tertinggi untuk menentukan kekuatan terobosan harga.

  3. Volume perdagangan (volume) - Memerlukan volume perdagangan yang lebih besar dari hari sebelumnya untuk memastikan terobosan yang valid.

  4. Rata-rata bergerak sederhana 200 hari (SMA) - Memerlukan harga penutupan dan harga pembukaan lebih tinggi dari garis 200 hari untuk menentukan arah tren.

Ketika beberapa kondisi di atas terpenuhi pada saat yang sama, sinyal beli dikeluarkan. Setelah itu, strategi menggunakan price tracking stop loss untuk secara aktif menghentikan kerugian dan mengunci keuntungan. Secara khusus, rumus perhitungan untuk garis stop loss trailing adalah:

trailPrice = close * (100 - trailPercent) / 100

Di mana trailPercent adalah persentase stop loss yang dapat dikonfigurasi. Ini memastikan bahwa selama harga naik, garis stop loss juga akan naik untuk mengunci keuntungan. Ketika harga jatuh kembali ke garis stop loss, tutup posisi untuk menghentikan kerugian.

Keuntungan dari Strategi

Sebagai strategi breakout yang khas, ia memiliki keuntungan berikut:

  1. Penyaringan multi-kondisi memastikan validitas penyusutan dan menghindari penyusutan palsu.

  2. Mengadopsi pelacakan harga stop loss, yang dapat secara aktif memotong kerugian dan mengunci keuntungan untuk memaksimalkan menghindari penarikan.

  3. Logika strategi sederhana dan jelas, mudah dipahami dan dioptimalkan.

Risiko dari Strategi

Strategi ini juga memiliki beberapa risiko:

  1. Masih ada kemungkinan kegagalan breakout yang tidak dapat sepenuhnya menghindari kerugian.

  2. Perhentian yang terlalu agresif dapat menyebabkan berhenti yang sering.

  3. Pengaturan parameter yang tidak benar dapat menyebabkan frekuensi perdagangan yang berlebihan atau sinyal yang terlewatkan.

Solusi untuk risiko yang sesuai adalah:

  1. Mengoptimalkan parameter dan mengurangi stop loss besar untuk memastikan ruang yang cukup.

  2. Rasional meringankan kondisi breakout untuk memastikan tren yang jelas tidak terlewatkan.

  3. Uji varietas yang berbeda untuk mengevaluasi stabilitas strategi.

Arahan Optimasi

Mengingat frekuensi yang tinggi dari pemberhentian dalam strategi ini, arah berikut dapat dioptimalkan lebih lanjut:

  1. Uji metode stop loss pelacakan lainnya, seperti pelacakan rata-rata bergerak, ATR dan pelacakan volatilitas.

  2. Meningkatkan algoritma pembelajaran mesin untuk melatih penilaian kombinasi parameter kinerja yang lebih baik berdasarkan data historis.

  3. Tambahkan kondisi penilaian tambahan berdasarkan volume break-out untuk memastikan efektivitas.

  4. Evaluasi perbedaan pengaturan parameter di berbagai varietas untuk menemukan yang paling cocok.

Kesimpulan

Momentum Burst Tracking Strategy adalah strategi pelacakan tren yang sangat praktis secara keseluruhan. Strategi ini memecahkan masalah ketidakmampuan untuk secara efektif menghentikan kerugian dan keuntungan dalam mengambil strategi breakout, sambil tetap mengendalikan risiko dengan baik saat menangkap tren. Dengan ruang untuk perbaikan lebih lanjut dengan memperkenalkan optimasi dan pembelajaran mesin, itu layak penelitian dan aplikasi yang mendalam.


/*backtest
start: 2023-03-01 00:00:00
end: 2023-12-10 05:20:00
period: 1d
basePeriod: 1h
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/
// © doks23

//@version=5
strategy(title = "SD:Momentum Burst", overlay=true, initial_capital=1000,commission_value = 0,slippage = 0,process_orders_on_close=true)

//Check Vol
checkVol = input.bool(defval=false,title="IncludeAvgVolume?")
volSMAlength = input(50, title="VolumeLength")
volumeSma = ta.sma(volume, volSMAlength)
highvolume = volume >= volumeSma
volumeCond=checkVol?highvolume:true

// Profit and Loss
trailPercent    = input.float(title="Trail%", defval=3, step=0.1)

//longCondition
PercentThreshold=input.float(3.8,'BreakoutPercent', step=0.1)
MaxThreshold=input.float(10,'Max Breakout', step=0.1)
HighCloseRatio=input.float(70,'Close to High Ratio', step=1)
float candleCloseBull = ((close[0] - open[0]) / (high[0] - open[0]) * 100)
float isFourPercentBull = (((close[0] - close[1]) / close[1]) * 100)
LongCond=volume > volume[1] and isFourPercentBull > PercentThreshold and candleCloseBull > HighCloseRatio and isFourPercentBull<MaxThreshold
barcolor(color=(LongCond?color.yellow: na),title='BObar')
longCondition= LongCond and volumeCond and close>ta.sma(close,200) and open>ta.sma(close,200)

//Input Strategy
DateCheck=  input.bool(title = 'Custom Date Range?', defval=true,group = 'Strategy')
FromDate=   input(defval = timestamp("1 Jan 2019 00:00"),group = 'Strategy')
ToDate      =input(defval = timestamp("31 Dec 2023 00:00"),group = 'Strategy')
PostionSize =input.string('Contract','Select Position Size',options = ['Percent of Equity','Contract'],group = 'Strategy')
ContractQty =input.int(1,'No of Contract',group = 'Strategy')

//Backtesting Date Range
TimeWindow=true
// Number of Contract
var int trade_qty=na
if(PostionSize=='Contract')
    trade_qty:=ContractQty
else
    trade_qty:= (strategy.equity>strategy.initial_capital)?math.floor(strategy.equity/strategy.initial_capital):ContractQty


//Position Buy
BuyTriggerPrice = ta.valuewhen(longCondition,high,0)
//Trailing price
var float trailPrice    = na
float percentMulti = (100 - trailPercent) / 100
longCondition2=longCondition and TimeWindow
if longCondition2
    strategy.entry("Long", strategy.long,qty=trade_qty,stop = BuyTriggerPrice)
    trailPrice := close*percentMulti
if strategy.position_size>0
    trailPrice := math.max(close*percentMulti,trailPrice[1])
    if low <= trailPrice
        strategy.exit('Exit','Long',stop = trailPrice)
        if strategy.position_size==0     
            trailPrice:=na
// Plot Strategy
var float trail_long_SL=na
if strategy.position_size>0
    trail_long_SL:=trailPrice
else
    trail_long_SL:=na
//Strategy Plot
PlotMA=input.bool(title="Plot MA?", defval=false)
plot(PlotMA?ta.sma(close,10):na,color = color.red,title = '10MA')
plot(PlotMA?ta.sma(close,21):na,color = color.white,title = '21MA')
plot(PlotMA?ta.sma(close,200):na,color = color.orange,title = '200MA')
// plot(trail_long_SL,color = color.gray,style = plot.style_steplinebr,linewidth = 1)

Lebih banyak