
Strategi ini menggabungkan berbagai indikator teknis seperti IMACD, EMA, dan tabel keseimbangan pertama untuk membangun model pohon keputusan yang komprehensif untuk sinyal beli dan jual.
Melakukan sinyal lebih: Melakukan lebih ketika IMACD berwarna kondisi tertentu dan EMA 40 lebih tinggi dari grafik awan
Tanda Keluar: Keluar saat IMACD merah dan EMA 40 di bawah trajectory dari gambar awan
Solusi risiko: mengoptimalkan pengaturan parameter, menyesuaikan panjang EMA, menyederhanakan proses operasi.
Strategi ini mengintegrasikan berbagai indikator untuk mengidentifikasi tren, membangun model pohon keputusan untuk menghasilkan sinyal perdagangan. Keuntungan dari kualitas sinyal yang tinggi, akurasi yang tinggi, cocok untuk pengoptimalan bertahap. Perlu memperhatikan optimasi parameter dan strategi stop loss untuk mengontrol risiko perdagangan, sehingga mendapatkan keuntungan stabil jangka panjang.
/*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)