Sumber daya yang dimuat... Pemuatan...

Sistem Perdagangan Pelacakan Momentum EMA Dual Chain Hybrid

Penulis:ChaoZhang, Tanggal: 2024-11-29 17:04:57
Tag:EMAMA

img

Gambaran umum

Strategi ini adalah sistem perdagangan inovatif yang didasarkan pada Exponential Moving Averages (EMA), menangkap peluang pasar melalui dua rantai perdagangan independen yang ditetapkan di berbagai kerangka waktu.

Prinsip Strategi

Strategi ini menggunakan desain rantai ganda, dengan masing-masing rantai memiliki masuk dan keluar logik yang unik:

Rantai 1 (Tren Jangka Panjang) menggunakan kerangka waktu mingguan dan harian:

  • Sinyal masuk: Dihasilkan ketika harga penutupan melintasi EMA pada jangka waktu mingguan
  • Sinyal keluar: Dihasilkan ketika harga penutupan melintasi di bawah EMA pada kerangka waktu harian
  • Periode EMA default adalah 10, dapat disesuaikan sesuai kebutuhan

Rantai 2 (Momentum Jangka Pendek) menggunakan kerangka waktu 12 jam dan 9 jam:

  • Sinyal masuk: Dihasilkan ketika harga penutupan melintasi EMA pada jangka waktu 12 jam
  • Sinyal keluar: Dihasilkan ketika harga penutupan melintasi di bawah EMA pada jangka waktu 9 jam
  • Periode EMA default adalah 9, dapat disesuaikan sesuai kebutuhan

Keuntungan Strategi

  1. Analisis pasar multi-dimensi: Penangkapan tren pasar yang komprehensif melalui kombinasi kerangka waktu
  2. Fleksibilitas tinggi: Dua rantai dapat diaktifkan atau dinonaktifkan secara independen
  3. Pengendalian risiko yang kuat: Konfirmasi beberapa kerangka waktu mengurangi sinyal palsu
  4. Adaptifitas parameter yang kuat: Periode EMA dan kerangka waktu dapat disesuaikan
  5. Fungsi backtesting lengkap: Pengaturan periode pengujian bawaan untuk verifikasi strategi

Risiko Strategi

  1. Risiko pembalikan tren: Mungkin menunjukkan keterlambatan di pasar yang tidak stabil
  2. Risiko konfigurasi jangka waktu: Pasar yang berbeda mungkin memerlukan kombinasi jangka waktu yang berbeda
  3. Risiko optimasi parameter: Over-optimasi dapat menyebabkan overfit
  4. Risiko tumpang tindih sinyal: pemicu simultan dari kedua rantai dapat meningkatkan risiko posisi

Saran pengendalian risiko:

  • Menetapkan tingkat stop loss yang wajar
  • Sesuaikan parameter berdasarkan karakteristik pasar
  • Melakukan backtesting menyeluruh sebelum perdagangan langsung
  • Pengukuran posisi kontrol per perdagangan

Arah Optimasi Strategi

  1. Optimasi Filter Sinyal:
  • Tambahkan mekanisme konfirmasi volume
  • Menggabungkan indikator volatilitas
  • Sertakan konfirmasi kekuatan tren
  1. Optimasi Pengendalian Risiko:
  • Mengembangkan mekanisme stop-loss yang dinamis
  • Sistem manajemen posisi desain
  • Tambahkan fungsi kontrol penarikan
  1. Optimasi jangka waktu:
  • Penelitian kombinasi jangka waktu yang optimal
  • Mengembangkan mekanisme kerangka waktu adaptatif
  • Tambahkan fungsionalitas pengenalan keadaan pasar

Ringkasan

Sistem Trading Dual Chain Hybrid Momentum EMA Tracking System mencapai analisis pasar multi-dimensi melalui kombinasi inovatif dari strategi moving average jangka panjang dan pendek. Desain sistem ini fleksibel dan dapat disesuaikan sesuai dengan kondisi pasar dan gaya trader yang berbeda, menunjukkan kepraktisan yang kuat. Melalui kontrol risiko yang tepat dan optimasi berkelanjutan, strategi ini memiliki potensi untuk mencapai pengembalian yang stabil dalam perdagangan aktual. Pedagang disarankan untuk melakukan backtesting dan optimasi parameter yang menyeluruh sebelum implementasi langsung untuk mencapai hasil perdagangan yang optimal.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title='Dual Chain Strategy', shorttitle='DualChain', overlay=true)

// User inputs for enabling/disabling chains
enableChain1 = input.bool(true, title='Enable Chain 1')
enableChain2 = input.bool(true, title='Enable Chain 2')

// User inputs for the first chain
len1 = input.int(10, minval=1, title='Length Chain 1 EMA', group="Chain 1")
src1 = input(close, title='Source Chain 1', group="Chain 1")
tf1_entry = input.timeframe("W", title='Chain 1 Entry Timeframe', group="Chain 1")
tf1_exit = input.timeframe("D", title='Chain 1 Exit Timeframe', group="Chain 1")

// Weekly timeframe EMA for Chain 1
entryEMA1 = request.security(syminfo.tickerid, tf1_entry, ta.ema(src1, len1))

// Daily timeframe EMA for Chain 1
exitEMA1 = request.security(syminfo.tickerid, tf1_exit, ta.ema(src1, len1))

// User inputs for the second chain
len2 = input.int(9, minval=1, title='Length Chain 2 EMA', group="Chain 2")
src2 = input(close, title='Source Chain 2', group="Chain 2")
tf2_entry = input.timeframe("720", title='Chain 2 Entry Timeframe (12H)', group="Chain 2")  // 12 hours
tf2_exit = input.timeframe("540", title='Chain 2 Exit Timeframe (9H)', group="Chain 2")    // 9 hours

// Entry timeframe EMA for Chain 2
entryEMA2 = request.security(syminfo.tickerid, tf2_entry, ta.ema(src2, len2))

// Exit timeframe EMA for Chain 2
exitEMA2 = request.security(syminfo.tickerid, tf2_exit, ta.ema(src2, len2))

// Plotting Chain 1 EMAs
plot(enableChain1 ? entryEMA1 : na, title='Chain 1 Entry EMA', color=color.new(color.blue, 0))
plot(enableChain1 ? exitEMA1 : na, title='Chain 1 Exit EMA', color=color.new(color.yellow, 0))

// Plotting Chain 2 EMAs
plot(enableChain2 ? entryEMA2 : na, title='Chain 2 Entry EMA', color=color.new(color.green, 0))
plot(enableChain2 ? exitEMA2 : na, title='Chain 2 Exit EMA', color=color.new(color.red, 0))

// Backtesting period
startDate = input(timestamp('2015-07-27'), title="StartDate")
finishDate = input(timestamp('2026-01-01'), title="FinishDate")
time_cond = true

// Entry Condition (Chain 1)
bullishChain1 = enableChain1 and ta.crossover(src1, entryEMA1)
bearishChain1 = enableChain1 and ta.crossunder(src1, entryEMA1)

// Exit Condition (Chain 1)
exitLongChain1 = enableChain1 and ta.crossunder(src1, exitEMA1)
exitShortChain1 = enableChain1 and ta.crossover(src1, exitEMA1)

// Entry Condition (Chain 2)
bullishChain2 = enableChain2 and ta.crossover(src2, entryEMA2)
bearishChain2 = enableChain2 and ta.crossunder(src2, entryEMA2)

// Exit Condition (Chain 2)
exitLongChain2 = enableChain2 and ta.crossunder(src2, exitEMA2)
exitShortChain2 = enableChain2 and ta.crossover(src2, exitEMA2)

// Debugging: Plot entry signals for Chain 1
plotshape(bullishChain1, color=color.new(color.green, 0), style=shape.labelup, text='BUY C1', location=location.belowbar)
plotshape(bearishChain1, color=color.new(color.red, 0), style=shape.labeldown, text='SELL C1', location=location.abovebar)

// Debugging: Plot entry signals for Chain 2
plotshape(bullishChain2, color=color.new(color.green, 0), style=shape.labelup, text='BUY C2', location=location.belowbar)
plotshape(bearishChain2, color=color.new(color.red, 0), style=shape.labeldown, text='SELL C2', location=location.abovebar)

// Trade Execution for Chain 1
if bullishChain1 and time_cond
    strategy.entry('BUY_Chain_1', strategy.long)

if bearishChain1 and time_cond
    strategy.entry('SELL_Chain_1', strategy.short)

// Exit trades based on daily conditions for Chain 1
if exitLongChain1 and strategy.opentrades > 0
    strategy.close(id='BUY_Chain_1', when=exitLongChain1)

if exitShortChain1 and strategy.opentrades > 0
    strategy.close(id='SELL_Chain_1', when=exitShortChain1)

// Trade Execution for Chain 2
if bullishChain2 and time_cond
    strategy.entry('BUY_Chain_2', strategy.long)

if bearishChain2 and time_cond
    strategy.entry('SELL_Chain_2', strategy.short)

// Exit trades based on daily conditions for Chain 2
if exitLongChain2 and strategy.opentrades > 0
    strategy.close(id='BUY_Chain_2', when=exitLongChain2)

if exitShortChain2 and strategy.opentrades > 0
    strategy.close(id='SELL_Chain_2', when=exitShortChain2)

// Close all positions outside the backtesting period
if not time_cond
    strategy.close_all()


Berkaitan

Lebih banyak