Strategi pohon keputusan multi-indikator: IMACD, EMA dan Tabel Imbalan Pertama


Tanggal pembuatan: 2024-01-22 11:25:56 Terakhir diubah: 2024-01-22 11:25:56
Keterangan: 0 Jumlah klik: 341
1
Perhatian
1105
Pengamat

多指标决策树策略:IMACD、EMA和一目均衡表

Pengamatan

Strategi ini mengintegrasikan berbagai indikator teknis, seperti IMACD, EMA, dan First Equilibrium Table, untuk membangun model pohon keputusan yang komprehensif yang digunakan untuk mengirimkan sinyal beli dan jual.

Prinsip Strategi

  1. IMACD: MACD yang ditingkatkan, dengan ImpulseMACD dan ImpulseHisto untuk menangkap tren pasar yang lebih baik
  2. Tabel keseimbangan pertama: menggambar garis ganti, garis acuan, garis pelopor A, garis pelopor B, dan lain-lain, mendeteksi tingkat dukungan dan resistensi
  3. EMA 40: Bantuan untuk menentukan arah tren
  4. Mengirim sinyal untuk melakukan banyak dan tidak melakukan banyak berdasarkan hubungan spesifik IMACD, komponen grafik awan, dan EMA 40

Melakukan lebih banyak sinyal: Melakukan lebih banyak ketika IMACD berwarna untuk kondisi tertentu dan EMA 40 lebih tinggi dari grafik awan

Sinyal Jatuh: Jatuh saat IMACD berwarna merah dan EMA 40 di bawah garis bawah grafik awan

Analisis Keunggulan

  1. Kombinasi multi-indikator, penilaian keseluruhan tren pasar, peningkatan akurasi keputusan
  2. Klasifikasi model pohon keputusan jelas, sinyal transaksi dihasilkan dengan jelas
  3. Panjang EMA dapat disesuaikan, memberikan fleksibilitas penilaian tambahan
  4. Menggabungkan grafik awan dan indikator tren untuk mengidentifikasi dukungan dan resistensi dengan lebih baik

Analisis Risiko

  1. Kombinasi multi-indikator, pengaturan parameter yang lebih rumit
  2. Panjang EMA yang tidak diatur dengan benar dapat menyebabkan sinyal perdagangan palsu
  3. Perhatian terhadap beberapa indikator pada saat yang sama menjadi lebih sulit untuk dioperasikan.

Mengatasi risiko: mengoptimalkan pengaturan parameter, menyesuaikan panjang EMA, menyederhanakan proses operasi.

Optimasi arah

  1. Mengoptimalkan pengaturan parameter untuk meningkatkan stabilitas strategi
  2. Meningkatkan strategi stop loss untuk mengendalikan kerugian tunggal
  3. Memperbaiki kualitas sinyal dengan melakukan retesting berdasarkan data besar
  4. Menggabungkan algoritma pembelajaran mesin untuk membuat pohon keputusan yang dapat beradaptasi

Pengamatan

Strategi ini menggunakan berbagai indikator untuk mengidentifikasi tren dan membangun model pohon keputusan untuk menghasilkan sinyal perdagangan. Keuntungan adalah kualitas sinyal yang tinggi, akurasi yang tinggi, dan cocok untuk pengoptimalan bertahap. Perlu memperhatikan optimasi parameter dan strategi stop loss untuk mengendalikan risiko perdagangan, sehingga menghasilkan pengembalian stabil jangka panjang.

Kode Sumber Strategi
                
                    /*backtest
start: 2024-01-14 00:00:00
end: 2024-01-21 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Decision Tree Strategy: IMACD, EMA and Ichimoku [cryptoonchain]", overlay=true)

lengthMA = input(34, title="Length MA")
lengthSignal = input(9, title="Length Signal")
conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length")
displacement = input.int(26, minval=1, title="Lagging Span")
emaLength = input(40, title="EMA Length")  // Added user-configurable EMA length

calc_smma(src, len) =>
    smma = float(na)
    smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
    smma

calc_zlema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    d = ema1 - ema2
    ema1 + d

src = ohlc4
hi = calc_smma(high, lengthMA)
lo = calc_smma(low, lengthMA)
mi = calc_zlema(src, lengthMA)

md = (mi > hi) ? (mi - hi) : (mi < lo) ? (mi - lo) : 0
sb = ta.sma(md, lengthSignal)
sh = md - sb
mdc = src > mi ? (src > hi ? color.rgb(128, 255, 0, 26) : color.green) : (src < lo ? color.red : color.orange)

colorCondition = color.rgb(128, 255, 0, 26)

conversionLine = math.avg(ta.lowest(conversionPeriods), ta.highest(conversionPeriods))
baseLine = math.avg(ta.lowest(basePeriods), ta.highest(basePeriods))
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = math.avg(ta.lowest(laggingSpan2Periods), ta.highest(laggingSpan2Periods))

// Use user-configurable length for EMA
ema40 = ta.ema(close, emaLength)

ebc = input(false, title="Enable bar colors")
barcolor(ebc ? mdc : na)

conversionLinePlot = plot(conversionLine, color=#2962FF, title="Conversion Line", display=display.none)
baseLinePlot = plot(baseLine, color=#B71C1C, title="Base Line", display=display.none)
laggingSpanPlot = plot(close, offset=-displacement + 1, color=#43A047, title="Lagging Span", display=display.none)
leadLine1Plot = plot(leadLine1, offset=displacement - 1, color=#A5D6A7, title="Leading Span A", display=display.none)
leadLine2Plot = plot(leadLine2, offset=displacement - 1, color=#EF9A9A, title="Leading Span B", display=display.none)
kumoCloudUpperLinePlot = plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, offset=displacement - 1, title="Kumo Cloud Upper Line", display=display.none)
kumoCloudLowerLinePlot = plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, offset=displacement - 1, title="Kumo Cloud Lower Line", display=display.none)
fill(kumoCloudUpperLinePlot, kumoCloudLowerLinePlot, color=leadLine1 > leadLine2 ? color.green : color.red)

a = (leadLine1 > leadLine2 ? leadLine1 : leadLine2) 
b = (leadLine1 < leadLine2 ? leadLine1 : leadLine2)  

if mdc == colorCondition and ema40 > a[displacement - 1]
    strategy.entry("Long", strategy.long)

if mdc == color.red and ema40 < b[displacement - 1]
    strategy.entry("Short", strategy.short)

                
            
Informasi lebih lanjut