MACD торговой стратегии RSI

Автор:Чао Чжан, Дата: 2021-09-21 20:48:50
Тэги:

Обзор

Эта стратегия использует индикатор MACD для определения тренда индикатора RSI, генерируя торговые сигналы.

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

Стратегия основана на двух основных показателях:

  1. РСИ Вычисляет регулярный 14-периодный RSI.

  2. MACD показателя RSI Вычисляет значения MACD на RSI, с по умолчанию быстрым MA 12, медленным MA 26, сигнальной линией 9.

Когда MACD RSI пересекается вверх, быстро и медленно MAs золотой крест, он определяет восходящий тренд и идет долго.

Когда MACD пересекается вниз, быстро и медленно MAs мертвый перекресток, он определяет нисходящий тренд и идет короткий.

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

Преимущества

  • MACD оценивает направление тренда RSI для более высокой точности
  • RSI как основной показатель, MACD как вторичный
  • Экспоненциальные МА делают определение тренда стабильным
  • Комбинации проверяют друг друга, избегая сбоев
  • Настройка параметров обеспечивает гибкость для различных рынков

Риски

  • И RSI, и MACD могут отставать, что приводит к неточным сигналам
  • Неправильные параметры MACD могут генерировать больше ложных сигналов
  • Чисто на основе показателей, чувствительные к внезапным событиям
  • Механизм остановки потерь нуждается в дальнейшем совершенствовании
  • Оптимизация параметров требуется для различных продуктов

Риски могут быть уменьшены:

  • Оптимизация комбинаций параметров RSI и MACD
  • Добавление других фильтров для подтверждения
  • Расслабление TP/SL для предотвращения преждевременного выхода
  • Рассмотрение повторного въезда
  • Размер позиции для ограничения единичных потерь

Руководство по улучшению

Стратегия может быть улучшена из:

  1. Испытание комбинаций параметров RSI и MACD

  2. Добавление вторичного подтверждения при сигналах MACD

    Например, паттерны свечей, объем, полосы Боллинджера и т.д.

  3. Оптимизация остановок для остановок после

  4. Добавление правил повторного въезда

    Восстановление позиций после остановки, если тенденция продолжается

  5. Корректировка размеров позиций по изменчивости

    Малый размер при высокой волатильности, больший размер при низкой волатильности

Резюме

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


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

//@version=3

strategy(title = "MACD of RSI", overlay = false)

//////////////////////// RSI ///////////////////////////

src = close, len = input(14, minval=1, title="Length")
up = sma(max(change(src), 0), len)
down = sma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))


//////////////////////// RSI   //////////////////////////

//////////////// MACD  ////////////////////////////

sourcemacd = rsi 

fastLength = input(12, minval=1), slowLength=input(26,minval=1)
signalLength=input(9,minval=1)


fastMA = ema(sourcemacd, fastLength)
slowMA = ema(sourcemacd, slowLength)

macd = fastMA - slowMA
signal = ema(macd, signalLength)
delta=macd-signal

swap1 = delta>0?green:red

plot(delta,color=swap1,style=columns,title='Histo',histbase=0,transp=20)
p1 = plot(macd,color=blue,title='MACD Line')
p2 = plot(signal,color=red,title='Signal')
fill(p1, p2, color=blue)
hline(0)




/////////////////////////MACD  //////////////////////////


// Conditions



longCond = na
sellCond = na
longCond :=  crossover(delta,0)
sellCond :=  crossunder(delta,0)




monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  longCond  ) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY")
    
else
    strategy.cancel(id="BUY")


if ( sellCond   ) 

    strategy.close("BUY")







Больше