Стратегия гистограммы MACD RSI

Автор:Чао Чжан, Дата: 2023-12-25 11:45:10
Тэги:

img

Обзор

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

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

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

В частности, стратегия сначала рассчитывает 14-периодный индикатор RSI. Затем на основе RSI вычисляется индикатор MACD, включая 12- и 26-периодные EMA, а также 9-периодную сигнальную линию. Затем вычисляется гистограмма MACD.

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

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

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

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

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

  3. Сочетание RSI и MACD, с суждениями, основанными на нескольких факторах, помогает отфильтровать ложные сигналы.

Риски стратегии

  1. Настройки параметров для RSI и MACD влияют на эффективность стратегии и требуют настройки и оптимизации.

  2. Сочетание нескольких показателей увеличивает сложность стратегии и вероятность ошибок.

  3. Торговые сигналы MACD могут отставать и должны быть дополнены другими индикаторами.

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

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

  2. Включить другие индикаторы, такие как KDJ, Bollinger Bands, чтобы сформировать индикаторный кластер и улучшить точность сигнала.

  3. Включить стратегии стоп-лосса для контроля по торговым потерям.

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

Заключение

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


/*backtest
start: 2022-12-18 00:00:00
end: 2023-12-24 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")

Больше