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

Автор:Чао Чжан, Дата: 2023-11-13 18:04:07
Тэги:

img

Обзор

Эта стратегия использует сочетание двойных систем EMA и индикаторов RSI для определения рыночных тенденций при генерировании торговых сигналов. Она относится к следующей стратегии тренда. Эта простая и простая в использовании стратегия применима к различным основным индексам и криптовалютам.

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

Эта стратегия использует два MACD с различными параметрами в качестве основных торговых индикаторов. Первый MACD использует 10-периодную короткую EMA, 22-периодную длинную EMA и 9-периодную сигнальную линию. Второй MACD использует 21-периодную короткую EMA, 45-периодную длинную EMA и 20-периодную сигнальную линию.

Первый MACD генерирует сигналы покупки, когда линия DIFF пересекается выше нуля, и сигналы продажи, когда она пересекается ниже нуля.

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

Наконец, линия RSI K выше 20 помогает подтвердить сигналы продажи.

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

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

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

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

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

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

Эффективность Stoch RSI в обнаружении уровней перекупа/перепродажи не идеальна.

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

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

Рассмотреть возможность добавления стоп-лосса для контроля потерь на одной позиции, например, стоп-лосса ATR или стоп-лосса на основе более низких скользящих средних.

Добавить другие индикаторы для подтверждения, такие как сочетание KD или Bollinger Bands с Stoch RSI для более надежного обнаружения перекупленности/перепроданности.

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

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

Заключение

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


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

//@version=2
strategy("Multiple MACD RSI simple strategy", overlay=true, initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=80, pyramiding=0, calc_on_order_fills=true)

fastLength = input(10)
slowlength = input(22)
MACDLength = input(9)

MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = sma(MACD, MACDLength)
delta = MACD - aMACD

fastLength2 = input(21)
slowlength2 = input(45)
MACDLength2 = input(20)

MACD2 = ema(open, fastLength2) - ema(open, slowlength2)
aMACD2 = sma(MACD2, MACDLength2)
delta2 = MACD2 - aMACD2


uptrend = (close + high)/(close[1] + high[1])
downtrend = (close + low)/(close[1] + low[1])

smoothK = input(2, minval=1, title="K smoothing Stoch RSI")
smoothD = input(3, minval=1, title= "D smoothing for Stoch RSI")
lengthRSI = input(7, minval=1, title="RSI Length")
lengthStoch = input(8, minval=1, title="Stochastic Length")
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
h0 = hline(80)
h1 = hline(20)

yearin = input(2018, title="Year to start backtesting from")

if (delta > 0) and (year>=yearin) and (delta2 > 0) and (uptrend > 1)
    strategy.entry("buy", strategy.long, comment="buy")

if (delta < 0) and (year>=yearin) and (delta2 < 0) and (downtrend < 1) and (d > 20)
    strategy.entry("sell", strategy.short, comment="sell")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Больше