Sistem Perdagangan Mengikuti Momentum Pergerakan Rata-rata Hibrida Rantai Ganda

EMA MA
Tanggal Pembuatan: 2024-11-29 17:04:57 Akhirnya memodifikasi: 2024-11-29 17:04:57
menyalin: 5 Jumlah klik: 465
1
fokus pada
1617
Pengikut

Sistem Perdagangan Mengikuti Momentum Pergerakan Rata-rata Hibrida Rantai Ganda

Ringkasan

Strategi ini adalah sistem perdagangan inovatif yang didasarkan pada indeks moving average (EMA) untuk menangkap peluang pasar dengan menyiapkan dua rantai perdagangan independen pada periode waktu yang berbeda. Strategi ini mengintegrasikan keuntungan dari pelacakan tren jangka panjang dan perdagangan momentum jangka pendek untuk menghasilkan sinyal perdagangan dengan penyambungan EMA pada beberapa periode waktu, seperti mingguan, harian, 12 jam dan 9 jam.

Prinsip Strategi

Strategi ini menggunakan desain dua rantai, masing-masing rantai memiliki logika masuk dan keluar yang unik:

Rantai 1 (tren jangka panjang) menggunakan garis lingkar dan siklus garis matahari:

  • Sinyal masuk: munculnya sinyal ganda ketika harga close out melewati EMA pada siklus lingkaran
  • Sinyal Keluar: Sinyal Pusing yang dihasilkan saat harga close out melewati EMA di bawah siklus garis matahari
  • Periode EMA default adalah 10, dapat disesuaikan sesuai kebutuhan

Rantai 2 (mobilitas jangka pendek) menggunakan siklus 12 jam dan 9 jam:

  • Sinyal masuk: munculnya sinyal ganda ketika harga close out melewati EMA pada siklus 12 jam
  • Sinyal Keluar: Sinyal Pusing yang dihasilkan saat harga penutupan melewati EMA dalam siklus 9 jam
  • Periode EMA default adalah 9, dapat disesuaikan sesuai kebutuhan

Keunggulan Strategis

  1. Analisis Pasar Multidimensi: Pengertian Pasar yang Komprehensif melalui Kombinasi Periode Waktu yang Berbeda
  2. Fleksibel: dua rantai dapat diaktifkan atau dinonaktifkan secara independen untuk menyesuaikan gaya perdagangan yang berbeda
  3. Pengendalian risiko yang sempurna: Menggunakan konfirmasi periode waktu ganda, mengurangi risiko sinyal palsu
  4. Parameter dapat disesuaikan: siklus EMA dan siklus waktu dapat diubah sesuai kebutuhan
  5. Fitur responsif yang disempurnakan: pengaturan built-in selama responsif, untuk memfasilitasi verifikasi dan optimasi kebijakan

Risiko Strategis

  1. Risiko perubahan tren: kemungkinan keterlambatan dalam pasar yang sangat bergejolak
  2. Risiko konfigurasi siklus waktu: berbagai pasar mungkin memerlukan kombinasi siklus waktu yang berbeda
  3. Risiko optimasi parameter: optimasi berlebihan dapat menyebabkan overfit
  4. Risiko sinyal tumpang tindih: Dua rantai yang dipicu secara bersamaan dapat meningkatkan risiko memegang posisi

Saran pengendalian risiko:

  • Tetapkan Stop Loss yang Rasional
  • Parameter yang disesuaikan dengan karakteristik pasar
  • Pemutakhiran dan verifikasi yang memadai
  • Kontrol rasio modal untuk setiap transaksi

Arah optimasi strategi

  1. Optimasi penyaringan sinyal:
  • Tambahkan mekanisme konfirmasi volume
  • Masukkan sinyal penyaringan indikator fluktuasi
  • Peningkatan intensitas konfirmasi tren
  1. Optimasi pengendalian risiko:
  • Mengembangkan mekanisme stop loss dinamis
  • Desain sistem manajemen posisi
  • Menambahkan kontrol mundur
  1. Optimalisasi siklus waktu:
  • Studi Kombinasi Periode Waktu Optimal
  • Mengembangkan mekanisme siklus waktu adaptasi
  • Menambahkan fungsi identifikasi status pasar

Meringkaskan

Sistem perdagangan pelacakan rata-rata kuantitas campuran rantai ganda dengan menggabungkan strategi rata-rata jangka pendek dan jangka panjang secara inovatif, memungkinkan analisis dan pemahaman multidimensi pasar. Desain sistem fleksibel, dapat disesuaikan dengan berbagai kondisi pasar dan gaya pedagang, dan memiliki kepraktisan yang kuat. Dengan kontrol risiko yang masuk akal dan pengoptimalan berkelanjutan, strategi ini diharapkan dapat menghasilkan keuntungan yang stabil dalam perdagangan nyata.

Kode Sumber Strategi
/*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()