Стратегия следования за трендом на основе EMA и MACD


Дата создания: 2024-01-05 11:16:17 Последнее изменение: 2024-01-05 11:16:17
Копировать: 0 Количество просмотров: 640
1
Подписаться
1621
Подписчики

Стратегия следования за трендом на основе EMA и MACD

Обзор

Стратегия использует среднюю линию EMA и индикатор MACD, чтобы идентифицировать трендовые сигналы в течение нескольких временных рамок, чтобы улавливать средне- и долгосрочные тенденции. Принимаются действия по отслеживанию тенденций, когда краткосрочные тенденции совпадают с направлением среднесрочных тенденций.

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

Стратегия определяет направление среднесрочной и долгосрочной тенденции на 50-дневную и 100-дневную линии EMA. Когда краткосрочные тенденции идентифицируются MACD-индикатором, определяется, согласуется ли направление краткосрочной тенденции с направлением среднесрочной и долгосрочной тенденции. Если согласуется, проводится операция по отслеживанию тенденции.

В частности, когда MACD проходит медленную линию на скоростной линии и закрывается > 50-дневная ЭМА и закрывается > 100-дневная ЭМА, делается больше; когда MACD проходит медленную линию под скоростной линией и закрывается < 50-дневная ЭМА и закрывается < 100-дневная ЭМА, делается пусто.

Кроме того, стратегия использует индикатор ATR для расчета диапазона колебаний и установления стоп-стоп-цены. Стоп-позиция ATR определяется кратным количеством ценой закрытия.

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

  1. В сочетании со средней линией EMA и индикатором MACD можно идентифицировать сигналы тренда в течение нескольких временных рамок, чтобы предотвратить ошибку в долгосрочном тренде
  2. Использование показателя ATR для эффективного управления рисками с помощью установления стоп-лосс в зависимости от рыночных колебаний
  3. Избегайте нейтральных зон рынка сбыта и уменьшайте ненужные потери

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

  1. EMA отстает от средней и может пропустить поворотный момент
  2. MACD имеет несколько временных циклов, настройка параметров влияет на результат
  3. Диапазон колебаний ATR не может полностью отражать будущие колебания цен и не может полностью избежать риска

Ответ:

  1. В сочетании с другими индикаторами, чтобы избежать задержки EMA
  2. Настройка параметров MACD, оптимизация результатов
  3. Разумная установка ATR-коэффициентов для контроля максимальных потерь

Направление оптимизации

  1. Тестирование различных комбинаций среднелинейных циклов ЭМА
  2. Оптимизация параметров MACD
  3. Используя методы машинного обучения, автоматически находит оптимальный ATR Stop Loss Stop Stop Multiple

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA-50, EMA-100, and MACD Strategy with ATR for Stop Loss/Profit", overlay=true)

// MACD hesaplama
fastLength = input(12, title="Fast Length")
slowLength = input(26, title="Slow Length")
signalLength = input(9, title="Signal Length")
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)

// EMA-50 ve EMA-100 hesaplama
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)

// ATR hesaplama
atrLength = input(14, title="ATR Length")
atrValue = ta.atr(atrLength)

// Take Profit ve Stop Loss çoklayıcıları
takeProfitMultiplier = input(3.0, title="Take Profit Multiplier") // TP, 3 katı ATR
stopLossMultiplier = input(1.0, title="Stop Loss Multiplier")

// Long Pozisyon Koşulları
longCondition = ta.crossover(macdLine, signalLine) and close > ema50 and close > ema100

// Short Pozisyon Koşulları
shortCondition = ta.crossunder(macdLine, signalLine) and close < ema50 and close < ema100

// Take Profit ve Stop Loss Seviyeleri
takeProfitLevel = close + takeProfitMultiplier * atrValue
stopLossLevel = close - stopLossMultiplier * atrValue

// Long Pozisyon İşlemleri
strategy.entry("Long", strategy.long, when=longCondition)
strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel)

// Short Pozisyon İşlemleri
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel)

// Grafikte Gösterme
plot(ema50, color=color.blue, title="EMA-50")
plot(ema100, color=color.red, title="EMA-100")
hline(0, "Zero Line", color=color.gray)