Strategi pokok keputusan pelbagai penunjuk: IMACD, EMA dan Ichimoku

Penulis:ChaoZhang, Tarikh: 2024-01-22 11:25:56
Tag:

img

Ringkasan

Strategi ini mengintegrasikan beberapa penunjuk teknikal seperti IMACD, EMA dan Ichimoku untuk membina model pokok keputusan yang komprehensif untuk menjana isyarat perdagangan.

Logika Strategi

  1. IMACD: MACD dipertingkatkan untuk menangkap lebih baik trend pasaran melalui ImpulseMACD dan ImpulseHisto
  2. Ichimoku: Garis penukaran grafik, garis asas, rentang utama A, rentang utama B untuk mengenal pasti tahap sokongan dan rintangan
  3. EMA 40: Membantu menentukan arah trend
  4. Isyarat panjang/pendek diaktifkan berdasarkan keadaan khusus antara IMACD, komponen awan dan EMA 40

Isyarat panjang: Apabila IMACD adalah warna tertentu dan EMA 40 adalah di atas awan atas, pergi panjang

Isyarat pendek: Apabila IMACD berwarna merah dan EMA 40 berada di bawah bawah awan, pergi pendek

Analisis Kelebihan

  1. Gabungan pelbagai penunjuk meningkatkan ketepatan penilaian trend
  2. Klasifikasi yang jelas model pokok keputusan menghasilkan isyarat perdagangan yang jelas
  3. Panjang EMA yang fleksibel untuk bantuan yang lebih baik dalam penentuan trend
  4. Mengenali tahap sokongan dan rintangan dengan lebih baik dengan indikator awan dan trend

Analisis Risiko

  1. Penyesuaian parameter yang kompleks dengan pelbagai penunjuk
  2. Isyarat palsu mungkin dicetuskan oleh panjang EMA yang tidak betul
  3. Kesukaran untuk memantau banyak penunjuk secara serentak

Penyelesaian Risiko: Mengoptimumkan tetapan parameter, menyesuaikan panjang EMA, mempermudah aliran kerja.

Arahan pengoptimuman

  1. Meningkatkan kestabilan dengan mengoptimumkan parameter
  2. Mengehadkan kerugian dengan strategi stop loss
  3. Meningkatkan kualiti isyarat dengan backtesting dengan data yang besar
  4. Membina model pokok keputusan adaptif dengan pembelajaran mesin

Ringkasan

Strategi ini mengenal pasti trend menggunakan pelbagai penunjuk untuk membina model pokok keputusan untuk menghasilkan isyarat perdagangan. Pro adalah isyarat berkualiti tinggi dan tepat. Merangkumi ruang untuk pengoptimuman progresif.


/*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)


Lebih lanjut