Стратегия многоиндикаторного дерева решений: IMACD, EMA и Ichimoku

Автор:Чао Чжан, Дата: 2024-01-22 11:25:56
Тэги:

img

Обзор

Эта стратегия объединяет несколько технических индикаторов, таких как IMACD, EMA и Ichimoku, для создания комплексной модели дерева решений для генерации торговых сигналов.

Логика стратегии

  1. IMACD: Улучшенный MACD для лучшего отслеживания рыночных тенденций с помощью ImpulseMACD и ImpulseHisto
  2. Ичимоку: линия преобразования графика, базовая линия, ведущий диапазон A, ведущий диапазон B для определения уровней поддержки и сопротивления
  3. EMA 40: Помощь в определении направления тренда
  4. Длинные/короткие сигналы запускаются на основе специфических условий между IMACD, облачными компонентами и EMA 40

Длинный сигнал: когда IMACD является определенным цветом и EMA 40 находится над облаком, перейдите в длинный

Короткий сигнал: когда IMACD красный и EMA 40 ниже дна облака, перейти на короткий

Анализ преимуществ

  1. Сочетание нескольких индикаторов повышает точность оценки тенденции
  2. Ясная классификация модели дерева решений генерирует однозначные торговые сигналы
  3. Гибкая длина EMA для лучшего содействия в определении тренда
  4. Лучше определить уровни поддержки и сопротивления с помощью облачных и трендовых индикаторов

Анализ рисков

  1. Сложная настройка параметров с несколькими показателями
  2. Ложные сигналы могут быть вызваны неправильной длиной EMA
  3. Трудность одновременного мониторинга многих показателей

Решения рисков: оптимизация параметров, корректировка длины EMA, упрощение рабочего процесса.

Руководство по оптимизации

  1. Улучшить стабильность путем оптимизации параметров
  2. Ограничение потерь при использовании стратегий стоп-лосса
  3. Улучшить качество сигнала путем обратного тестирования с огромными данными
  4. Создать адаптивную модель дерева решений с помощью машинного обучения

Резюме

Эта стратегия идентифицирует тенденции с использованием нескольких индикаторов для построения модели дерева решений для генерации торговых сигналов. Про - это высококачественные и точные сигналы. Состоит из места для прогрессивной оптимизации. Требует сосредоточения на настройке параметров и стоп-лосс для контроля рисков для долгосрочной стабильной доходности.


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


Больше