Стратегия торговли роботом MACD


Дата создания: 2023-12-18 17:30:15 Последнее изменение: 2023-12-18 17:30:15
Копировать: 0 Количество просмотров: 723
1
Подписаться
1621
Подписчики

Стратегия торговли роботом MACD

Обзор

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

Стратегический принцип

Эта стратегия основана на MACD-индикаторе. MACD-индикатор состоит из быстрой и медленной линий. Быстрая линия - это краткосрочная средняя, медленная линия - это долгосрочная средняя, и отношения между ними отражают состояние торговли и покупки на рынке.

В этой стратегии, скоростные и медленные линии рассчитываются по алгоритму EMA, и их периодичность может быть настроена. Для улучшения качества сигнала, добавлена сигнальная линия, использующая алгоритм EMA для еще одной плавной обработки значения MACD.

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

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

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

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

  1. Использование MACD-индикатора для определения времени покупки и продажи имеет высокую надежность
  2. Добавление линий для улучшения качества сигнала
  3. Отслеживание убытков и эффективное управление рисками
  4. Покупаемая линия может быть настроена на чувствительность стратегии
  5. Все условия основаны на показателях и не зависят от внешних факторов.

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

Однако эта стратегия также несет в себе некоторые риски:

  1. MACD отстает, возможно, пропустит возможность короткой линии
  2. Неправильная установка стоп-пойнтов может привести к ненужным потерям
  3. Parameter Tuning требует большого количества времени для тестирования и настройки
  4. Влияние на стоимость сделки и скольжение

Эти риски могут быть уменьшены путем соответствующей корректировки параметров и комбинации других показателей.

Направление оптимизации

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

  1. В сочетании с другими индикаторами фильтруют сигналы, такие как KDJ, RSI и т. д.
  2. Добавление алгоритмов машинного обучения для определения точек продаж
  3. Использование динамических стоп вместо статических
  4. Тестирование и оптимизация MACD-параметров и входных линий
  5. Стратегии корректировки с учетом влияния на стоимость сделки

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(shorttitle = "GBPUSD MACD", title = "GBPUSD 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.00045)
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, signal) and signal > 0
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)