Стратегия двойных сильных индикаторов

Автор:Чао Чжан, Дата: 2023-11-20 09:47:41
Тэги:

img

Обзор

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

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

  1. Вычислить индикатор MACD, включая быструю линию, медленную линию и линию сигнала.

  2. Вычислить индикатор RSI и установить пороговые значения перекупленности и перепродажи.

  3. Объедините перекрестные сигналы MACD и показатели перекупленности/перепроданности от RSI, чтобы сформулировать условия покупки и продажи:

    • Условие покупки: быстрая линия MACD пересекает медленную линию (золотой крест), в то время как индикатор RSI только что отступил от зоны перекупленности, сигнализируя об обратном движении.

    • Условия продажи: быстрая линия MACD пересекает ниже медленной линии (смертный крест), а индикатор RSI входит в зону перекупленности, сигнализируя об обратном движении.

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

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

  1. MACD может идентифицировать тенденции и торговые возможности. RSI измеряет условия перекупки/перепродажи. Использование обоих повышает точность.

  2. Использование двух индикаторов отфильтровывает ложные сигналы, которые могут возникнуть с одним индикатором.

  3. MACD в сочетании с RSI позволяет покупать до реверсий и продавать после реверсий, чтобы захватить повороты.

  4. Стратегия имеет умеренную частоту, отслеживает тенденции и гибко отслеживает изменения.

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

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

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

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

  4. Строгое управление рисками и деньгами имеет решающее значение для торговли в режиме реального времени.

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

  1. Оптимизировать параметры быстрого/медленного MACD для лучших комбинаций.

  2. Оптимизировать пороги перекупленности/перепроданности по показателю RSI для предотвращения ложных сигналов.

  3. Добавить стоп-лосс для контроля риска одной сделки.

  4. Подумайте о добавлении фильтров, таких как полосы Боллинджера или KDJ для дополнительного подтверждения.

  5. Испытайте различные стратегии входа/выхода, такие как прорыв или следующий тренд.

Резюме

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


/*backtest
start: 2022-11-13 00:00:00
end: 2023-11-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// © sabirt
strategy(title='MACD and RSI', overlay=true, shorttitle='MACD&RSI')
//MACD Settings
fastMA = input.int(title='Fast moving average', defval=12, minval=1)
slowMA = input.int(title='Slow moving average', defval=26, minval=1)
signalLength = input.int(9, minval=1)

//RSI settings
RSIOverSold = input.int(35, minval=1)
RSIOverBought = input.int(80, minval=1)
src = close
len = input.int(14, minval=1, title='Length')
up = ta.rma(math.max(ta.change(src), 0), len)
down = ta.rma(-math.min(ta.change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
wasOversold = rsi[0] <= RSIOverSold or rsi[1] <= RSIOverSold or rsi[2] <= RSIOverSold or rsi[3] <= RSIOverSold or rsi[4] <= RSIOverSold or rsi[5] <= RSIOverSold
wasOverbought = rsi[0] >= RSIOverBought or rsi[1] >= RSIOverBought or rsi[2] >= RSIOverBought or rsi[3] >= RSIOverBought or rsi[4] >= RSIOverBought or rsi[5] >= RSIOverBought



[currMacd, _, _] = ta.macd(close[0], fastMA, slowMA, signalLength)
[prevMacd, _, _] = ta.macd(close[1], fastMA, slowMA, signalLength)
signal = ta.ema(currMacd, signalLength)

avg_1 = math.avg(currMacd, signal)
crossoverBear = ta.cross(currMacd, signal) and currMacd < signal ? avg_1 : na
avg_2 = math.avg(currMacd, signal)
crossoverBull = ta.cross(currMacd, signal) and currMacd > signal ? avg_2 : na

strategy.entry('buy', strategy.long, when=crossoverBull and wasOversold)
strategy.close('buy', when=crossoverBear and wasOverbought)



Больше