Purata Pergerakan Momentum Hibrid Dwi Rangkaian Mengikuti Sistem Dagangan

EMA MA
Tarikh penciptaan: 2024-11-29 17:04:57 Akhirnya diubah suai: 2024-11-29 17:04:57
Salin: 5 Bilangan klik: 465
1
fokus pada
1617
Pengikut

Purata Pergerakan Momentum Hibrid Dwi Rangkaian Mengikuti Sistem Dagangan

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan inovatif berdasarkan purata bergerak indeks ((EMA) untuk menangkap peluang pasaran dengan menetapkan dua rantaian perdagangan bebas dalam tempoh masa yang berbeza. Strategi ini menggabungkan kelebihan trend jangka panjang dan perdagangan momentum jangka pendek untuk menghasilkan isyarat perdagangan dengan menyeberangi EMA dalam beberapa tempoh masa seperti garis mingguan, garis harian, 12 jam dan 9 jam, yang membolehkan analisis dan pengendalian pelbagai dimensi pasaran.

Prinsip Strategi

Strategi ini menggunakan reka bentuk dua rantaian, di mana setiap rantaian mempunyai logik masuk dan keluar yang unik:

Rantai 1 ((Tren jangka panjang) menggunakan garis pusingan dan garis hari:

  • Isyarat masuk: Isyarat plurali dihasilkan apabila harga penutupan melintasi EMA pada kitaran pusingan
  • Isyarat keluar: Isyarat tandas berlaku apabila harga penutupan melintasi EMA di bawah kitaran garis matahari
  • Secara lalai, EMA adalah 10 dan boleh diubah mengikut keperluan.

Rantai 2 ((Penggerak jangka pendek) menggunakan kitaran 12 jam dan 9 jam:

  • Isyarat masuk: Isyarat berganda dihasilkan apabila harga penutupan melintasi EMA pada kitaran 12 jam
  • Isyarat keluar: Isyarat tandas berlaku apabila harga penutupan melintasi EMA dalam kitaran 9 jam
  • Secara lalai, kitaran EMA adalah 9, boleh disesuaikan mengikut keperluan

Kelebihan Strategik

  1. Analisis pasaran berbilang dimensi: memahami pergerakan pasaran secara menyeluruh melalui gabungan tempoh masa yang berbeza
  2. Fleksibiliti: Dua rantaian boleh dihidupkan atau dimatikan secara berasingan, menyesuaikan diri dengan gaya dagangan yang berbeza
  3. Kawalan risiko yang sempurna: Pengesahan pelbagai kitaran masa untuk mengurangkan risiko isyarat palsu
  4. Parameter boleh laras: kitaran EMA dan kitaran masa boleh diubah mengikut keperluan
  5. Fungsi pengembalian yang disempurnakan: tetapan semasa pengembalian terbina dalam untuk pengesahan dan pengoptimuman strategi

Risiko Strategik

  1. Risiko trend reversal: Kemungkinan ketinggalan dalam pasaran yang bergolak
  2. Risiko konfigurasi kitaran masa: pasaran yang berbeza mungkin memerlukan kombinasi kitaran masa yang berbeza
  3. Risiko pengoptimuman parameter: pengoptimuman berlebihan boleh menyebabkan overfit
  4. Risiko tumpang tindih isyarat: kedua-dua rantaian yang mencetuskan risiko memegang kedudukan

Cadangan kawalan risiko:

  • Menetapkan Stop Loss yang Bermakna
  • Pengesuaian parameter mengikut ciri pasaran
  • Pengesahan semula yang mencukupi sebelum pelepasan
  • Kawal nisbah modal bagi setiap transaksi

Arah pengoptimuman strategi

  1. Pengoptimuman penapisan isyarat:
  • Tambah mekanisme pengesahan volum
  • Memperkenalkan isyarat penyaringan indikator kadar turun naik
  • Pengesahan peningkatan trend
  1. Pengoptimuman kawalan risiko:
  • Pembangunan mekanisme hentian kerugian dinamik
  • Reka bentuk sistem pengurusan kedudukan
  • Menambah kawalan penarikan balik
  1. Pengoptimuman kitaran masa:
  • Mengkaji kombinasi kitaran masa yang optimum
  • Membangunkan mekanisme kitaran masa penyesuaian
  • Tambah fungsi pengenalan status pasaran

ringkaskan

Sistem perdagangan pengesanan purata kuantiti campuran rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian

Kod 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()