Стратегия торговли на основе индикаторов RSI и MACD

Автор:Чао Чжан, Дата: 2024-01-31 16:07:31
Тэги:

img

Обзор

Эта стратегия объединяет индикаторы относительной силы (RSI) и движущейся средней конвергенции (MACD) для определения торговых возможностей для BTC. Она длинна, когда RSI ниже 30, а линия MACD ниже линии сигнала, а гистограмма MACD ниже -100; она коротка, когда RSI выше 80, а линия MACD выше линии сигнала, а гистограмма MACD больше 250. Стратегия также использует остановку остановки для блокировки прибыли.

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

  1. Используйте индикатор RSI, чтобы определить, является ли рынок перепроданным или перекупленным. RSI ниже 30 рассматривается как сигнал перепроданности, а выше 80 рассматривается как сигнал перекупленности.

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

  3. Объедините сигналы от индикаторов RSI и MACD, чтобы сформировать правила входа для этой стратегии.

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

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

  1. Сочетание индикаторов RSI и MACD помогает эффективно отфильтровывать ложные сигналы.

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

  3. Следующая стоп-лосс блокирует прибыль в соответствии с движением рынка, контролируя риск.

  4. Стратегия имеет несколько параметров и легко внедряется.

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

  1. Риск одного инструмента от торговли только BTC.

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

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

  4. Плохая настройка параметров может привести к переоценке или пропущенным сделкам.

Возможности для расширения

  1. Подумайте о добавлении других индикаторов, таких как полосы Боллинджера, KD и т. д., чтобы дополнить торговые сигналы.

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

  3. Оптимизировать механизмы стоп-лосса, например, своевременный стоп-лосс, средний стоп-лосс и т.д.

  4. Включить машинное обучение для оптимизации параметров.

Резюме

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


/*backtest
start: 2023-01-24 00:00:00
end: 2024-01-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BTC/USDT RSI and MACD Strategy", overlay = true)

// Define the RSI period
rsiPeriod = input(14, "RSI Period")

// Calculate the RSI
rsi = ta.rsi(close, rsiPeriod)

// Define the MACD parameters
macdShort = input(12, "MACD Short Period")
macdLong = input(26, "MACD Long Period")
macdSignal = input(9, "MACD Signal Period")

// Calculate the MACD
[macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal)

// Define the trailing stop level
trailing_stop_loss_factor = input.float(2.50, "Trailing Stop Loss Factor", step = 0.01)

// Define the entry and exit conditions
enterLong = ta.crossover(rsi, 30) and macdLine < signalLine and macdLine < -100
enterShort = ta.crossunder(rsi, 83) and macdLine > signalLine and macdLine > 250

// Submit the orders
if (enterLong)
    strategy.entry("Long", strategy.long)
if (enterShort)
    strategy.entry("Short", strategy.short)

// Trailing Stop Loss
longTrailingStopLoss = strategy.position_avg_price * (1 - trailing_stop_loss_factor / 100)
shortTrailingStopLoss = strategy.position_avg_price * (1 + trailing_stop_loss_factor / 100)
if strategy.position_size > 0 
    strategy.exit("Exit Long", "Long", stop  = longTrailingStopLoss)
if strategy.position_size < 0 
    strategy.exit("Exit Short", "Short", stop = shortTrailingStopLoss)

// Plot the indicators
plot(rsi, "RSI", color=color.blue)
hline(20, "RSI Lower Level", color=color.green)
hline(80, "RSI Upper Level", color=color.red)
plot(macdLine - signalLine, "MACD Histogram", color=color.red, style=plot.style_histogram)
hline(0, "Zero", color=color.gray)

Больше