Стратегия количественной торговли MACD

Автор:Чао Чжан, Дата: 2023-12-19 15:11:57
Тэги:

img

Обзор

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

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

Долгий сигнал генерируется, когда линия MACD находится ниже линии SIGNAL, а абсолютное значение MACD ниже -0.00025. После занятия длинной позиции, если линия MACD снова пересекает линию SIGNAL, позиция будет закрыта.

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

Преимущества

  1. Использует индикатор MACD для оценки уровня перепроданности, который имеет определенную надежность.
  2. Простые торговые сигналы и правила, которые легко реализовать.
  3. Длительные периоды хранения означают меньшую частоту торговли, снижение затрат на транзакции и сдвиг.

Риски

  1. Риск неудачной реверсии приводит к потерям, если реверсия не произойдет.
  2. Недействительные сигналы от плохого выбора параметров MACD.

Этот риск можно уменьшить путем оптимизации параметров.

Усовершенствования

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

Резюме

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


//@version=3
strategy(title="MACD - EURUSD", shorttitle="MACD EURUSD")

// 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)

longCond = crossover(macd, signal) and macd < -0.00025
exitLong = crossover(macd, hist)


strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)

Больше