Стратегия торговли на несколько временных рамок, основанная на MACD

Автор:Чао Чжан, Дата: 2024-01-12 11:46:59
Тэги:

img

Обзор: Эта стратегия использует индикатор MACD для генерации торговых сигналов в нескольких временных рамках для отслеживания тенденций.

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

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

Стратегия также использует изменение цвета гистограммы MACD для оценки тренда.

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

  1. Дизайн с несколькими временными рамками подтверждает тенденцию к более высокому TF и находит записи в более низком TF, улучшая системность.

  2. Использует кроссоверы MACD для определения входов и выходов, параметры оптимизированы для надежных сигналов.

  3. Цвет гистограммы помогает определить текущее состояние тренда, улучшая точность решения.

  4. Автоматически отслеживает тенденции, уменьшает эмоциональные ошибки.

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

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

  2. Стратегии с несколькими временными рамками сложнее оптимизировать и протестировать, поскольку необходимо одновременно рассматривать несколько периодов.

  3. Стоп-лосс не устанавливается, что создает риск больших потерь.

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

  1. Оптимизируйте параметры MACD для поиска лучших комбинаций.

  2. Добавьте стоп-лосс, чтобы ограничить максимальную потерю.

  3. Оценить другие фильтры для улучшения качества сигнала.

  4. Испытайте различные комбинации временных рамок, чтобы найти оптимальные совпадения.

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


/*backtest
start: 2023-12-12 00:00:00
end: 2024-01-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@author : SudeepBisht
//@version=2
strategy(title="SB_CM_MacD_Ult_MTF", shorttitle="SB_CM_Ult_MacD_MTF")
source = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above",  defval="60")
smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below")
sd = input(true, title="Show Dots When MacD Crosses Signal Line?")
sh = input(true, title="Show Histogram?")
macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?")
hist_colorChange = input(true,title="MacD Histogram 4 Colors?")

res = useCurrentRes ? timeframe.period : resCustom

fastLength = input(12, minval=1), slowLength=input(26,minval=1)
signalLength=input(9,minval=1)

fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)

macd = fastMA - slowMA
signal = sma(macd, signalLength)
hist = macd - signal

outMacD = request.security(syminfo.tickerid, res, macd)
outSignal = request.security(syminfo.tickerid, res, signal)
outHist = request.security(syminfo.tickerid, res, hist)

histA_IsUp = outHist > outHist[1] and outHist > 0
histA_IsDown = outHist < outHist[1] and outHist > 0
histB_IsDown = outHist < outHist[1] and outHist <= 0
histB_IsUp = outHist > outHist[1] and outHist <= 0

//MacD Color Definitions
macd_IsAbove = outMacD >= outSignal
macd_IsBelow = outMacD < outSignal

plot_color = hist_colorChange ? histA_IsUp ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? lime : red : red
signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime

circleYPosition = outSignal
 
plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=4)
plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2)
plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4)
plot(sd and cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=circles, linewidth=4, color=macd_color)
// hline(0, '0 Line', linestyle=solid, linewidth=2, color=white)

macd_chk=smd and outMacD ? outMacD : na
checker=smd and outSignal ? outSignal : na
if (crossover(macd_chk,checker))
    strategy.entry("BBandLE", strategy.long, comment="BBandLE")

if (crossunder(macd_chk, checker))
    strategy.entry("BBandSE", strategy.short, comment="BBandSE")


Больше