Торговые стратегии на основе индикаторов ADX и MACD


Дата создания: 2023-12-13 15:45:24 Последнее изменение: 2023-12-13 15:45:24
Копировать: 3 Количество просмотров: 1244
1
Подписаться
1621
Подписчики

Торговые стратегии на основе индикаторов ADX и MACD

Обзор

Стратегия, получившая название “Стратегия слежения за трендом”, основана на показателях ADX и MACD. Она использует средний индикатор тренда ((ADX) для определения направления и силы тренда и в сочетании с многообещающими сигналами с мобильной средней сплоченной индикации ((MACD) для осуществления торговли, следующей за трендом.

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

Эта стратегия определяет направление и силу рыночной тенденции, рассчитывая ADX и + DI, -DI кривую. Когда + DI кривая проходит через -DI кривую, это многоголовый рынок, а когда -DI кривая проходит через + DI кривую, это пустой рынок.

В частности, логика торговых сигналов стратегии состоит в следующем:

Многоглавый сигнал: когда разница +DI> -DI и MACD пересекает сигнал снизу вверх Головной сигнал: когда дифференциальная линия -DI> +DI и MACD пересекает линию сигнала вверх-вниз

В соответствии с этой логикой, стратегия способна уловить лучшие входные моменты в сильных тенденциях.

Стратегические преимущества

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

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

Стратегический риск

Несмотря на определенные преимущества этой стратегии, существуют риски, о которых следует помнить:

  1. торговые сигналы, составленные на ADX и MACD, которые в некоторых рыночных условиях могут быть недействительными или генерировать ошибочные сигналы, что может привести к ненужным потерям;

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

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

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

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

В этой стратегии есть место для оптимизации:

  1. Введение большего количества индикаторов может создать более сильный торговый сигнал, например, ограничение торговли в сочетании с индикатором волатильности;

  2. Параметры ADX и MACD могут быть автоматически оптимизированы с помощью методов машинного обучения;

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

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

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

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

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

//@version=5
strategy("TUE ADX/MACD Confluence V1.0", overlay=true)

showsignals = input(true, title="Show BUY/SELL Signals")
showcandlecolors = input(true, title="Show Candle Colors")
length = input(14, title="ADX Length")
smoothing = input(10, title="ADX Smoothing")
macdsource = input(close, title="MACD Source")
macdfast = input(12, title="MACD Fast Length")
macdslow = input(26, title="MACD Slow Length")
macdsignal = input(9, title="MACD Signal Length")
colorup = input(color.green, title="Up Candle Color")
colordown = input(color.red, title="Down Candle Color")

/////////////////////////////////////////////////////////////////////////////////////////////// ADX AND MACD CALC
[diplus, diminus, adx] = ta.dmi(length, smoothing)

[macdline, signalline, histline] = ta.macd(macdsource, macdfast, macdslow, macdsignal)

//////////////////////////////////////////////////////////////////////////////////////////////TRADE CALC

longcheck = diplus > diminus and macdline > signalline
shortcheck = diminus > diplus and signalline > macdline

int trade = 0

//Open from nothing

if trade == 0 and longcheck
    trade := 1

else if trade == 0 and shortcheck
    trade := -1
    
//Reversal

else if trade == 1 and shortcheck
    trade := -1
    
else if trade == -1 and longcheck
    trade := 1
    
//Keep status quo until crossover

else
    trade := trade[1]

//////////////////////////////////////////////////////////////////////////////////////////////PLOT 

colors = longcheck ? colorup : shortcheck ? colordown : color.white

plotcandle(open, high, low, close, color = showcandlecolors ? colors : na)

plotshape(trade[1] != 1 and trade == 1 and showsignals, style=shape.labelup, text='BUY', textcolor=color.white, color=color.green, size=size.small, location=location.belowbar)
plotshape(trade[1] != -1 and trade == -1 and showsignals, style=shape.labeldown, text='SELL', textcolor=color.white, color=color.red, size=size.small, location=location.abovebar)

///////////////////////////////////////////////////////////////////////////////////////////// ALERTS

// Add Stop Loss
stopLossPrice = input(100, title="Stop Loss Price")

if trade == 1
    strategy.entry("Long", strategy.long)

if trade == -1
    strategy.entry("Short", strategy.short)

if trade == 1 and close < close[1] - stopLossPrice
    strategy.close("LongExit")

if trade == -1 and close > close[1] + stopLossPrice
    strategy.close("ShortExit")