Тенденция MACD в соответствии со стратегией

Автор:Чао Чжан, Дата: 2023-11-16 17:42:09
Тэги:

img

Обзор

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

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

  1. Вычислить индикатор Fast MA, Slow MA и MACD. Fast MA использует 12-периодную EMA, Slow MA использует 26-периодную EMA. MACD - это разница между Fast и Slow MA.

  2. Установите линии покупки и продажи. Сгенерируйте сигнал покупки, когда MACD пересекает линию покупки, генерируйте сигнал продажи, когда MACD пересекает линию продажи.

  3. Установите динамический стоп-лосс после открытия позиции.

  4. Положение закрытия при запуске стоп-лосса или появлении сигнала обратного движения.

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

  1. Использование MACD для определения направления тренда может эффективно отслеживать тенденции.

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

  3. Логика стратегии проста и понятна, легко понять и автоматизировать для квантовой торговли.

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

  1. MACD имеет эффект отставания, может пропустить краткосрочное изменение тренда.

  2. Стоп-лосс, установленный слишком свободно, может пропустить некоторые прибыли, слишком жесткий может остановиться раньше.

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

  4. Работает лучше на трендовом рынке, может иметь убытки на неспокойном рынке.

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

  1. Оптимизируйте параметры MACD, чтобы найти лучшую комбинацию.

  2. Испытывать различные методы остановки потерь, такие как фиксированные точки, основанные на ATR и т.д.

  3. Добавить условия фильтрации с использованием других индикаторов, чтобы избежать ложных сигналов, например, полосы Боллинджера, RSI и т.д.

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

Резюме

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


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

//@version=3
strategy(shorttitle = "EURUSD MACD", title = "EURUSD MACD")
fastMA = input(title="Fast moving average",  defval = 12, minval = 7)
slowMA = input(title="Slow moving average",  defval = 26, minval = 7)
lastColor = yellow
[currMacd,_,_] = macd(close[0], fastMA, slowMA, 9)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9)
plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red
plot(currMacd, style = histogram, color = plotColor, linewidth = 3)
plot(0, title = "Zero line", linewidth = 1, color = gray)

//MACD
// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source",  defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=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=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)
///END OF MACD

//Long and Close Long Lines
linebuy = input(title="Enter Long", type=float, defval=-0.0002)
linesell = input(title="Close Long", type=float, defval=0.0001)

//Plot Long and Close Long Lines
plot(linebuy,color=green),plot(linesell,color=red)


//Stop Loss Input
sl_inp = input(0.05, title='Stop Loss %', type=float)/100


//Order Conditions
longCond = crossover(currMacd, linebuy)
exitLong = crossover(currMacd, linesell)
stop_level = strategy.position_avg_price * (1 - sl_inp)


//Order Entries
strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)
strategy.exit("Stop Loss", stop=stop_level)

Больше