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


Дата создания: 2024-01-22 11:25:56 Последнее изменение: 2024-01-22 11:25:56
Копировать: 0 Количество просмотров: 664
1
Подписаться
1617
Подписчики

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

Обзор

В этой стратегии используются различные технические показатели, такие как IMACD, EMA и таблица равновесия, для создания целостной модели дерева принятия решений для сигналов покупки и продажи.

Стратегический принцип

  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)