Эта стратегия принимает торговые решения на основе тренда гистограммы MACD

Автор:Чао Чжан, Дата: 2024-01-25 14:31:57
Тэги:

img

Обзор

Эта стратегия принимает торговые решения на основе тренда гистограммы MACD. Она использует восходящие и нисходящие тенденции гистограммы для генерации сигналов покупки и продажи. Когда гистограмма продолжает расти или падать в течение определенного периода, генерируются соответствующие сигналы.

Логика стратегии

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

Когда гистограмма продолжает расти в течение установленного периода, генерируется сигнал покупки. Это указывает на то, что MACD ускоряется, чтобы прорваться через линию сигнала вверх, предсказывая, что цены могут расти.

Когда гистограмма продолжает снижаться в течение установленного периода, генерируется сигнал продажи. Это указывает на то, что MACD ускоряется, чтобы прорваться через линию сигнала вниз, предсказывая, что цены могут упасть.

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

Стратегия имеет следующие преимущества:

  1. Используя тенденционную характеристику гистограммы MACD, он может фиксировать переломные моменты изменения цен и повышать рентабельность.

  2. В сочетании с условием последовательного роста или падения гистограммы, некоторые шумные сделки могут быть отфильтрованы, чтобы уменьшить ненужные потери.

  3. Позволяя настраивать параметры MACD и период тренда гистограммы, он может быть скорректирован в соответствии с различными продуктами и торговыми сеансами.

  4. Логика стратегии проста и ясна, легко понять и изменить, а также удобно комбинировать с другими показателями или стратегиями.

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

Стратегия также сопряжена с некоторыми рисками:

  1. Неправильные сигналы могут возникать, когда цены колеблются в диапазоне.

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

  3. Стоимость торговли и скольжение не учитываются.

  4. Неправильное настройка параметров (например, период MACD, период тренда гистограммы) может ухудшить эффективность стратегии.

Эти риски можно контролировать и уменьшать с помощью таких методов, как сочетание с индикаторами тренда, установка механизма остановки потерь, оптимизация параметров и т. д.

Руководство по оптимизации

Стратегия может быть оптимизирована в следующих аспектах:

  1. Комбинировать другие индикаторы для определения общего направления тренда, избегая торговли в колеблющихся диапазонах.

  2. Добавьте механизм остановки потери, например, остановка потери, когда MACD перерывает линию сигнала вниз.

  3. Оптимизировать параметры MACD для продуктов с различными частотами.

  4. Оптимизировать минимальный период последовательного роста или падения гистограммы, сбалансируя частоту и надежность сигнала.

  5. Попробуйте логику сигналов после неудачного прорыва, то есть обратный сигнал после обратной гистограммы.

  6. Комбинируйте другие показатели, такие как показатели объема или волатильности, чтобы измерить температуру рынка и фильтровать сигналы.

Заключение

В заключение, стратегия 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)


Больше