Эта стратегия принимает торговые решения на основе тренда гистограммы MACD. Она использует восходящие и нисходящие тенденции гистограммы для генерации сигналов покупки и продажи. Когда гистограмма продолжает расти или падать в течение определенного периода, генерируются соответствующие сигналы.
Стратегия использует быструю линию, медленную линию и гистограмму индикатора MACD. Сначала вычислить быструю EMA и медленную EMA. Затем вычесть медленную EMA из быстрой EMA, чтобы получить MACD, и вычесть сигнал, который является скользящей средней MACD, чтобы получить гистограмму.
Когда гистограмма продолжает расти в течение установленного периода, генерируется сигнал покупки. Это указывает на то, что MACD ускоряется, чтобы прорваться через линию сигнала вверх, предсказывая, что цены могут расти.
Когда гистограмма продолжает снижаться в течение установленного периода, генерируется сигнал продажи. Это указывает на то, что MACD ускоряется, чтобы прорваться через линию сигнала вниз, предсказывая, что цены могут упасть.
Стратегия имеет следующие преимущества:
Используя тенденционную характеристику гистограммы MACD, он может фиксировать переломные моменты изменения цен и повышать рентабельность.
В сочетании с условием последовательного роста или падения гистограммы, некоторые шумные сделки могут быть отфильтрованы, чтобы уменьшить ненужные потери.
Позволяя настраивать параметры MACD и период тренда гистограммы, он может быть скорректирован в соответствии с различными продуктами и торговыми сеансами.
Логика стратегии проста и ясна, легко понять и изменить, а также удобно комбинировать с другими показателями или стратегиями.
Стратегия также сопряжена с некоторыми рисками:
Неправильные сигналы могут возникать, когда цены колеблются в диапазоне.
После того, как гистограмма поднимается или падает, линия MACD может не прорваться через линию сигнала, не способная выйти с прибылью. Стоп-лосс следует установить для контроля риска.
Стоимость торговли и скольжение не учитываются.
Неправильное настройка параметров (например, период MACD, период тренда гистограммы) может ухудшить эффективность стратегии.
Эти риски можно контролировать и уменьшать с помощью таких методов, как сочетание с индикаторами тренда, установка механизма остановки потерь, оптимизация параметров и т. д.
Стратегия может быть оптимизирована в следующих аспектах:
Комбинировать другие индикаторы для определения общего направления тренда, избегая торговли в колеблющихся диапазонах.
Добавьте механизм остановки потери, например, остановка потери, когда MACD перерывает линию сигнала вниз.
Оптимизировать параметры MACD для продуктов с различными частотами.
Оптимизировать минимальный период последовательного роста или падения гистограммы, сбалансируя частоту и надежность сигнала.
Попробуйте логику сигналов после неудачного прорыва, то есть обратный сигнал после обратной гистограммы.
Комбинируйте другие показатели, такие как показатели объема или волатильности, чтобы измерить температуру рынка и фильтровать сигналы.
В заключение, стратегия MACD Histogram Trend реализует суждение о переломных точках изменения цены путем захвата изменений тренда на гистограмме. Сочетание оптимизации параметров и индикаторов комбинации может эффективно отфильтровать неправильные сигналы.
/*backtest start: 2023-01-18 00:00:00 end: 2024-01-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //study(title="Histogram Strategy by Sedkur", shorttitle="Histogram Strategy by Sedkur") strategy (title="Histogram Trends Strategy by Sedkur", shorttitle="Histogram Trends Strategy by Sedkur") /// Getting inputs dyear = input(title="Year", type=input.integer, defval=2017, minval=1950, maxval=2500) fast_length = input(title="Fast Length", type=input.integer, defval=12) slow_length = input(title="Slow Length", type=input.integer, defval=26) hist_length = input(title="Trend of Histogram Number", type=input.integer, defval=1, minval=1, maxval=100) //buyh = input(title="Buy histogram value", type=input.float, defval=0.0, minval=-1000, maxval=1000, step=0.1) //sellh = input(title="Sell histogram value", type=input.float, defval=0.0, minval=-1000, maxval=1000, step=0.1) 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 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) //bullish = hist[1] <= hist and buyh<=hist?true:false //bearish = hist[1] >= hist and sellh>=hist?true:false bull=0 bear=0 for i=0 to hist_length if (hist[i+1] <= hist[i]) bull:=bull+1 bullish = bull==hist_length+1?true:false for j=0 to hist_length if (hist[j+1] >= hist[j]) bear:=bear+1 bearish = bear==hist_length+1?true:false //bullish = hist[1] <= hist and hist[2] <= hist and hist[3] <= hist and hist[4] <= hist and hist[5] <= hist?true:false //bearish = hist[1] >= hist and hist[2] >= hist and hist[3] >= hist and hist[4] >= hist and hist[5] >= hist?true:false strategy.entry("buy", strategy.long, comment="buy", when = bullish and year>=dyear) strategy.entry("sell", strategy.short, comment="sell", when = bearish and year>=dyear)