
Эта стратегия формирует MACD-шоблеры, рассчитывая разницу между быстрыми и медленными EMA, а затем формирует сигнальную линию, рассчитывая равномерность MACD, таким образом, создавая двойную фильтрующую систему. Когда MACD-линия пересекает сигнальную линию снизу, она создает сигнал покупки, а когда MACD-линия пересекает сигнальную линию сверху, она создает сигнал продажи.
Центральным показателем этой стратегии является MACD-шоу, который рассчитывается как быстрый EMA (обычно на 12 дней) минус медленный EMA (обычно на 26 дней). Быстрый EMA более чувствителен и может улавливать краткосрочные колебания цен; медленный EMA более медленно реагирует на изменения цен.
Эта стратегия устанавливает входные параметры в виде длины быстрой линии, длины медленной линии, источника цены, длины сигнальной линии и плавных циклов. Параметры могут быть скорректированы в соответствии с различными рынками, чтобы найти оптимальную комбинацию параметров.
MACD - классический и понятный индикатор, который позволяет эффективно использовать краткосрочные и среднесрочные шансы на обратный ход.
Системы MACD с двумя EMA имеют лучшую плавность по сравнению с системами с одним MA.
Параметры могут быть изменены и оптимизированы для различных рынков.
Комбинированный трафик позволяет идентифицировать высококачественные сигналы.
При шоковом движении MACD-индикатор создает больше ошибочных сигналов.
Невозможно определить тенденцию, и пересечение с тенденцией может привести к убыткам.
Ограничения по времени отслеживания могут не учитывать экстремальные ситуации.
Параметры должны быть настроены так, чтобы оптимизировать объединение большего количества рыночных данных, в противном случае они могут перенастроить определенный сегмент рынка.
Можно контролировать риск, объединяя показатели для определения тенденции, устанавливая механизм остановки убытков. При этом расширяется диапазон отсчета и пространство для выборки рынка для оптимизации параметров.
Тестирование различных источников цен, таких как цена закрытия, средняя цена, цена перезагрузки и т. д.
Поиск оптимальных комбинаций на основе большего количества исторических данных.
Интеграция с другими показателями для определения качества сигнала. Например, сигнал трафика.
В сочетании с оценкой тенденций и диапазонов, чтобы избежать серьезных конфликтов с тенденциями.
Эта стратегия является классической и практической стратегией выбора времени, используя двойные фильтры EMA, чтобы улавливать перевернутые явления коротких циклов цены. Риск может быть контролирован с помощью оптимизации параметров, фильтрации сигналов и средств остановки убытков.
/*backtest
start: 2022-12-19 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="MACD Histogram Backtest", shorttitle="MACD")
// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
grow = (hist[1] < hist)
fall = (hist[1] > hist) and hist >= 0
stop = (hist[1] > hist)
plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
//Strategy Testing
// Component Code Start
// Example usage:
// if testPeriod()
// strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() => true
// Component Code Stop
//Entry and Close settings
if testPeriod()
strategy.entry("grow", true, 10, when = grow, limit = close)
strategy.close("grow", when = fall)
strategy.close("grow", when = stop)
//if testPeriod()
// strategy.entry("fall", false, 1000, when = fall, limit = close)
// strategy.close("fall", when = grow)