Стратегия торговли MACD Double Conversion Zero Lag — высокочастотная торговля, основанная на захвате краткосрочных трендов

MACD EMA SMA
Дата создания: 2024-05-24 18:14:37 Последнее изменение: 2024-05-24 18:14:37
Копировать: 0 Количество просмотров: 1177
1
Подписаться
1617
Подписчики

Стратегия торговли MACD Double Conversion Zero Lag — высокочастотная торговля, основанная на захвате краткосрочных трендов

Обзор

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

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

  1. Вычислите EMA (индексальная скользящая средняя) или SMA (простая скользящая средняя) для скорейшей линии (на 12 циклов) и медленной линии (на 26 циклов).
  2. Используя алгоритм нулевой задержки для вторичного сглаживания быстрой и медленной линий, устраняется задержка показателя и цены.
  3. MACD-линия представляет собой разницу между быстрой линией с нулевой задержкой и медленной линией с нулевой задержкой.
  4. Сигнальная линия состоит из EMA ((дифолт 9 циклов) или SMA линии MACD.
  5. MACD-постная диаграмма представляет собой разницу между MACD-линией и сигнальной линией, положительная - в синем цвете, отрицательная - в красном.
  6. Когда MACD-линия пересекает сигнальную линию снизу вверх, а точка пересечения находится ниже нулевой оси, образуется сигнал покупки (синяя точка).
  7. Когда MACD-линия пересекает сигнальную линию вверх-вниз, а точка пересечения находится над нулевой осью, образуется сигнал продажи (красная точка).
  8. Стратегия автоматически заказывает на основании сигналов о покупке и продаже и запускает соответствующие сигналы.

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

  1. Алгоритм с нулевой задержкой эффективно устраняет задержки между индикатором и ценой, повышая своевременность и точность сигналов.
  2. Дизайн двойной подвижной средней позволяет лучше отслеживать тенденции рынка и адаптироваться к различным рыночным условиям.
  3. MACD-полюсная диаграмма интуитивно отражает противоположность позиций, помогая принятию решений.
  4. Автоматические заказы и предупреждения помогают трейдерам своевременно использовать торговые возможности и повышать эффективность торговли.

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

  1. Частые перекрестные сигналы могут привести к чрезмерной торговле и убыткам на колеблющихся рынках.
  2. Неправильная настройка параметров может привести к искажению сигналов и повлиять на эффективность стратегии.
  3. Стратегия, основанная на исторических данных, плохо адаптирована к внезапным событиям и черным лебедям.

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

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

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

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

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

//@version=4
strategy("BNM INTRADAY SETUP MACD 3M - Version 1.2", shorttitle="Zero Lag MACD Enhanced 1.2")
source = close

fastLength = input(12, title="Fast MM period", minval=1)
slowLength = input(26,title="Slow MM period", minval=1)
signalLength =input(9,title="Signal MM period", minval=1)
useEma = input(true, title="Use EMA (otherwise SMA)")
useOldAlgo = input(false, title="Use Glaz algo (otherwise 'real' original zero lag)")
showDots = input(true, title="Show symbols to indicate crossing")
dotsDistance = input(1.5, title="Symbols distance factor", minval=0.1)

// Fast line
ma1 = useEma ? ema(source, fastLength) : sma(source, fastLength) 
ma2 = useEma ? ema(ma1, fastLength) : sma(ma1, fastLength) 
zerolagEMA = ((2 * ma1) - ma2)

// Slow line
mas1 = useEma ? ema(source, slowLength) : sma(source, slowLength)
mas2 = useEma ? ema(mas1, slowLength) : sma(mas1, slowLength)
zerolagslowMA = ((2 * mas1) - mas2)

// MACD line
ZeroLagMACD = zerolagEMA - zerolagslowMA 

// Signal line
emasig1 = ema(ZeroLagMACD, signalLength)
emasig2 = ema(emasig1, signalLength)
signal = useOldAlgo ? sma(ZeroLagMACD, signalLength) : (2 * emasig1) - emasig2

hist = ZeroLagMACD - signal

upHist = (hist > 0) ? hist : 0
downHist = (hist <= 0) ? hist : 0

p1 = plot(upHist, color=color.blue, transp=40, style=plot.style_columns, title='Positive delta')
p2 = plot(downHist, color=color.red, transp=40, style=plot.style_columns, title='Negative delta') 

zeroLine = plot(ZeroLagMACD, color=color.red, transp=0, linewidth=2, title='MACD line')
signalLine = plot(signal, color=color.blue, transp=0, linewidth=2, title='Signal')

ribbonDiff = hist > 0 ? color.blue : color.red
fill(zeroLine, signalLine, color=ribbonDiff)

circleYPosition = signal * dotsDistance
ribbonDiff2 = hist > 0 ? color.blue : color.red

// Generate dots for cross signals
plot(showDots and cross(ZeroLagMACD, signal) ? circleYPosition : na, style=plot.style_circles, linewidth=4, color=ribbonDiff2, title='Dots')

// Alerts for buy and sell signals
buySignal = cross(ZeroLagMACD, signal) and (ribbonDiff2 == color.blue) and (ZeroLagMACD < 0)
sellSignal = cross(ZeroLagMACD, signal) and (ribbonDiff2 == color.red) and (ZeroLagMACD > 0)

// Use 'strategy.entry' for placing orders in strategy context
if (buySignal)
    strategy.entry("Buy", strategy.long)
    alert("Buy Signal: Blue dot below zero line", alert.freq_once_per_bar_close)

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    alert("Sell Signal: Red dot above zero line", alert.freq_once_per_bar_close)