HMA mengoptimalkan strategi perdagangan kuantitatif multi-periode dan menggabungkannya dengan stop loss dinamis

HMA EHMA THMA WMA EMA SMA
Tanggal Pembuatan: 2024-07-31 11:28:09 Akhirnya memodifikasi: 2024-07-31 11:28:09
menyalin: 1 Jumlah klik: 797
1
fokus pada
1617
Pengikut

HMA mengoptimalkan strategi perdagangan kuantitatif multi-periode dan menggabungkannya dengan stop loss dinamis

Ringkasan

Artikel ini membahas strategi perdagangan kuantitatif yang dioptimalkan berdasarkan Hull Moving Average (HMA), yang menggabungkan analisis multi-siklus dan mekanisme stop loss dinamis. Strategi ini dikembangkan berdasarkan Hull Suite yang terkenal, dengan menambahkan perintah “strategy.exit (() ” dari PineScript v5 untuk mencapai trailing stop atau delayed trailing stop. Strategi ini terutama menggunakan fitur respon cepat HMA untuk menangkap tren pasar, sementara meningkatkan keandalan sinyal melalui analisis beberapa periode waktu.

Prinsip Strategi

  1. Hull Moving Average ((HMA): inti dari strategi ini adalah menggunakan HMA dan varian-variannya ((EHMA dan THMA) untuk mengidentifikasi tren pasar. HMA memiliki kecepatan reaksi yang lebih cepat dan lebih sedikit keterlambatan dibandingkan dengan rata-rata bergerak tradisional.

  2. Analisis multi-siklus: Strategi untuk menghasilkan sinyal perdagangan dengan membandingkan HMA dari periode waktu yang berbeda. Metode ini dapat mengurangi sinyal palsu dan meningkatkan akurasi perdagangan.

  3. Trailing Stop: Strategi ini menggunakan mekanisme trailing stop yang diaktifkan setelah keuntungan mencapai sejumlah poin, yang dapat secara efektif mengunci keuntungan dan mengendalikan risiko.

  4. Kontrol waktu transaksi: Strategi memungkinkan pengguna untuk menentukan waktu transaksi tertentu, yang membantu menghindari perdagangan pada saat volatilitas rendah atau kurangnya likuiditas.

  5. Pengendalian arah: Strategi memberikan pilihan untuk memilih arah perdagangan (untuk melakukan over, short, atau bidirectional) sehingga dapat beradaptasi dengan berbagai lingkungan pasar dan gaya perdagangan.

Keunggulan Strategis

  1. Fleksibilitas: Strategi memungkinkan pengguna untuk memilih varian Hull Moving Average yang berbeda (HMA, EHMA, THMA) untuk menyesuaikan diri dengan kondisi pasar yang berbeda.

  2. Manajemen risiko yang sangat baik: Dengan menggunakan mekanisme stop loss dinamis, strategi dapat membatasi potensi kerugian sambil melindungi keuntungan.

  3. Adaptabilitas: Metode analisis multi-siklus memungkinkan strategi untuk beradaptasi dengan lingkungan pasar yang berbeda, mengurangi dampak sinyal palsu.

  4. Efek visualisasi yang baik: Strategi menawarkan berbagai opsi visualisasi, seperti grafik pita HMA berkoder warna, yang membantu pedagang memahami tren pasar dengan lebih intuitif.

  5. Tingkat otomatisasi yang tinggi: Strategi dapat dieksekusi secara otomatis, mengurangi kemungkinan pengaruh emosional dan kesalahan operasi manusia.

Risiko Strategis

  1. Overtrading: Terlalu banyak sinyal palsu dapat dihasilkan di pasar horizontal, yang menyebabkan overtrading, karena strategi didasarkan pada HMA reaksi cepat.

  2. Risiko slippage: Strategi menggunakan teknik scalping yang mungkin menghadapi risiko slippage yang lebih tinggi, terutama di pasar yang kurang likuiditas.

  3. Sensitivitas parameter: kinerja kebijakan sangat bergantung pada pengaturan parameter, dan parameter yang tidak tepat dapat menyebabkan kinerja kebijakan yang buruk.

  4. Perubahan kondisi pasar: Dalam kondisi pasar yang berubah drastis, strategi mungkin perlu mengoptimalkan kembali parameter untuk tetap efektif.

  5. Ketergantungan teknologi: Pelaksanaan strategi bergantung pada koneksi jaringan yang stabil dan platform perdagangan, kegagalan teknologi dapat menyebabkan kerugian besar.

Arah optimasi strategi

  1. Meningkatkan indikator sentimen pasar: Kombinasi dengan indikator sentimen pasar seperti VIX, implied volatility option, dan lain-lain dapat membantu strategi untuk beradaptasi dengan lebih baik dengan berbagai kondisi pasar.

  2. Memperkenalkan algoritma pembelajaran mesin: Menggunakan teknologi pembelajaran mesin untuk secara dinamis menyesuaikan parameter HMA dan tingkat stop loss, dapat meningkatkan kemampuan adaptasi strategi.

  3. Meningkatkan analisis volume transaksi: Menggabungkan data volume transaksi dapat meningkatkan akurasi penilaian tren dan mengurangi kerugian akibat terobosan palsu.

  4. Optimalkan pilihan kerangka waktu: Temukan pengaturan analisis multi-periode yang optimal dengan mengevaluasi kombinasi kerangka waktu yang berbeda.

  5. Memperkenalkan metode risk-pricing: Menggunakan metode risk-pricing untuk mendistribusikan dana dalam perdagangan multi-varietas, dapat mengontrol risiko portofolio secara keseluruhan.

Meringkaskan

Strategi perdagangan kuantitatif multi-siklus yang dioptimalkan HMA yang digabungkan dengan stop loss dinamis adalah sistem perdagangan yang fleksibel dan efisien. Ini menyediakan pedagang dengan solusi perdagangan kuantitatif yang komprehensif dengan menggabungkan karakteristik responsif cepat dari Hull Moving Average, stabilitas analisis multi-siklus, dan kontrol risiko stop loss dinamis. Meskipun strategi ini berkinerja baik di pasar yang berubah dengan cepat, namun masih memerlukan pedagang untuk memperhatikan perubahan kondisi pasar, dan menyesuaikan parameter tepat waktu untuk mempertahankan efektivitasnya.

Kode Sumber Strategi
/*backtest
start: 2023-07-25 00:00:00
end: 2024-07-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © anotherDAPTrader

//Based upon Hull Suite by InSilico and others//
//with SCALP exit//

//@version=5
strategy('DAP Hull Sweet Scalp v1 Strategy', overlay=true)

// Session //

session = input(title='Session (Goes flat at end of session!)', defval='1800-1700')

//Check if it's in session//

is_session(session) =>
    not na(time(timeframe.period, session))

//Call the function
Session = is_session(session)

//Start and end of the session
start = Session and not Session[1]
end = not Session and Session[1]

//Plot the background color to see the session
bgcolor(Session ? color.new(color.white, 0) : na)

// trade directions //

strat_dir_input = input.string(title='Strategy Direction', defval='long', options=['long', 'short', 'all'])
strat_dir_value = strat_dir_input == 'long' ? strategy.direction.long : strat_dir_input == 'short' ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)

src = close

modeSwitch = input.string('Hma', title='Hull Variation', options=['Hma', 'Thma', 'Ehma'])

length = input(55, title='Length(180-200 for floating S/R , 55 for swing entry)')

switchColor = input(true, 'Color Hull according to trend?')

candleCol = input(false, title='Color candles based on Hull\'s Trend?')

visualSwitch = input(true, title='Show as a Band?')

thicknesSwitch = input(1, title='Line Thickness')

transpSwitch = input.int(40, title='Band Transparency', step=5)

//FUNCTIONS
//HMA
HMA(_src, _length) =>
    ta.wma(2 * ta.wma(_src, _length / 2) - ta.wma(_src, _length), math.round(math.sqrt(_length)))
//EHMA    
EHMA(_src, _length) =>
    ta.ema(2 * ta.ema(_src, _length / 2) - ta.ema(_src, _length), math.round(math.sqrt(_length)))
//THMA    
THMA(_src, _length) =>
    ta.wma(ta.wma(_src, _length / 3) * 3 - ta.wma(_src, _length / 2) - ta.wma(_src, _length), _length)

//SWITCH
Mode(modeSwitch, src, len) =>
    modeSwitch == 'Hma' ? HMA(src, len) : modeSwitch == 'Ehma' ? EHMA(src, len) : modeSwitch == 'Thma' ? THMA(src, len / 2) : na

//OUT
HULL = Mode(modeSwitch, src, length)
MHULL = HULL[0]
SHULL = HULL[2]

//COLOR
hullColor = switchColor ? HULL > HULL[2] ? #00ff00 : #ff0000 : #ff9800

//PLOT
///< Frame
Fi1 = plot(MHULL, title='MHULL', color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(visualSwitch ? SHULL : na, title='SHULL', color=hullColor, linewidth=thicknesSwitch, transp=50)
///< Ending Filler
fill(Fi1, Fi2, title='Band Filler', color=hullColor, transp=transpSwitch)
///BARCOLOR
barcolor(color=candleCol ? switchColor ? hullColor : na : na)


// Scalp //

slPoints = input.int(title='Profit Points Before Stop', minval=0, maxval=1000, step=1, defval=1, confirm=false)

slOffset = input.int(title='Then Trailing Stop Loss of ', minval=1, maxval=1000, step=1, defval=1, confirm=false)

//trades//

// Long Entry Function//

if Session and ta.crossover(HULL[0] , HULL[2])
    strategy.entry('long', strategy.long)
    strategy.exit('trailing stop', from_entry='long', trail_points=slPoints, trail_offset=slOffset)

// Short Entry Function//

if Session and ta.crossunder(HULL[0] , HULL[2])
    strategy.entry('short', strategy.short)
    strategy.exit('trailing stop', from_entry='short', trail_points=slPoints, trail_offset=slOffset)

if end
    strategy.close_all("End of Session - Go FLat")