Стратегия комбинирования RSI и MA

RSI MA EMA SMA HMA WMA STOCHRSI
Дата создания: 2024-05-28 17:34:11 Последнее изменение: 2024-05-28 17:34:11
Копировать: 2 Количество просмотров: 1310
1
Подписаться
1617
Подписчики

Стратегия комбинирования RSI и MA

Обзор

Эта стратегия объединяет RSI с подвижным средним ((MA) для получения торговых сигналов. RSI используется для определения того, перекупается или перепродается рынок, а MA используется для определения ценовой тенденции. Когда RSI перекупается и цена выше, чем MA, он создает сигнал покупки; когда RSI перепродается или MA создает мертвую вилку, он создает сигнал продажи. Кроме того, стратегия также вводит случайный RSI (StochRSI) в качестве вспомогательного решения, который будет маркировать подсказки на графике, когда StochRSI создает сигнал.

Стратегический принцип

  1. Рассчитайте значение RSI, чтобы определить, является ли рынок перекупленным (<70) или перепроданным (<30).
  2. Вычислите MA с заданным циклом, включая четыре типа EMA, SMA, HMA и WMA, и решите, отображается ли на графике в зависимости от параметров.
  3. Когда RSI перекупает и закрывается выше MA, создается сигнал купить; когда RSI перепродает или MA создает мертвую вилку, создается сигнал продать.
  4. Введение индикатора StochRSI в качестве вспомогательного суждения, когда StochRSI перекупает ((> 70) или перепродает ((< 30), будет отмечать подсказки на графике, но не будет создавать фактического торгового сигнала.

Стратегические преимущества

  1. RSI и MA - классические индикаторы, органично объединенные, чтобы лучше отслеживать тенденции и перекупать и перепродать.
  2. Типы и параметры MA могут быть свободно настроены, имеют высокую гибкость и могут быть скорректированы в соответствии с различными рыночными характеристиками.
  3. Введение показателя StochRSI в качестве вспомогательного суждения, чтобы предоставить больше информации для принятия торговых решений.
  4. Логика кода четкая, читабельная, легко понятна и поддается вторичной разработке.

Стратегический риск

  1. RSI и MA являются отстающими индикаторами, которые могут создавать более вводящие в заблуждение сигналы в начале обратного тренда.
  2. Неправильная настройка параметров может привести к тому, что сигнал будет слишком ранним или слишком поздним, что повлияет на общую прибыль.
  3. Недостаток управления стоп-паролями и позициями может привести к значительным рискам в условиях резкой волатильности рынка.

Направление оптимизации стратегии

  1. Введение более ранних показателей, таких как волатильность, для предварительного определения изменения тенденции.
  2. Фильтрация сигналов о покупке и продаже, например, требует, чтобы RSI и MA одновременно соответствовали определенным условиям, чтобы получить сигнал для повышения его точности.
  3. Добавление в стратегию модуля управления стоп-позициями и позициями, контролирующего риски отдельных сделок и общий риск.
  4. Оптимизация параметров стратегии с целью поиска оптимального сочетания параметров.
  5. Подумайте о включении различных циклов или нескольких разновидностей, чтобы максимально использовать взаимосвязь между разновидностями или циклами.

Подвести итог

Стратегия, объединяющая два классических показателя RSI и MA, способна улавливать тенденционные тенденции и время перекупа и перепродажи, а также вводить показатель StochRSI в качестве вспомогательного суждения. Общая идея проста и понятна. Однако у стратегии также есть некоторые недостатки, такие как отсутствие мер по контролю риска, необходимость улучшения точности сигнала и т. Д. В будущем можно усовершенствовать стратегию путем введения большего количества показателей, оптимизации правил сигнала, добавления модуля управления риском и т. Д., чтобы получить более стабильную прибыль.

Исходный код стратегии
/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI Strategy with Customizable MA and StochRSI Alert", overlay=true)

// กำหนดค่า RSI สำหรับการเปิดสัญญาณซื้อและขาย
rsiOverbought = input(70, title="RSI Overbought Level")
rsiOversold = input(30, title="RSI Oversold Level")

// เลือกชนิดของเส้นค่าเฉลี่ยเคลื่อนที่
maType = input.string("EMA", title="MA Type", options=["EMA", "SMA", "HMA", "WMA"])

// กำหนดค่าเส้นค่าเฉลี่ยเคลื่อนที่
maShortLength = input(12, title="MA Short Length")
maLongLength = input(26, title="MA Long Length")

// เลือกการแสดงผลของเส้นค่าเฉลี่ยเคลื่อนที่
showShortMA = input(true, title="Show Short Moving Average")
showLongMA = input(true, title="Show Long Moving Average")

// ฟังก์ชันสำหรับเลือกชนิดของเส้นค่าเฉลี่ยเคลื่อนที่
f_ma(src, length, type) =>
    switch type
        "SMA" => ta.sma(src, length)
        "EMA" => ta.ema(src, length)
        "HMA" => ta.hma(src, length)
        "WMA" => ta.wma(src, length)

// คำนวณค่าเส้นค่าเฉลี่ยเคลื่อนที่
maShort = showShortMA ? f_ma(close, maShortLength, maType) : na
maLong = showLongMA ? f_ma(close, maLongLength, maType) : na

// คำนวณค่า RSI
rsiValue = ta.rsi(close, 14)

// สร้างสัญญาณซื้อและขาย
buySignal = (rsiValue > rsiOverbought and ((showShortMA and showLongMA and close > maShort and maShort > maLong) or (showShortMA and not showLongMA and close > maShort) or (showLongMA and not showShortMA and close > maLong)))
sellSignal = (showShortMA and showLongMA and ta.crossover(maLong, maShort)) or (showShortMA and not showLongMA and ta.crossover(maShort, close)) or (showLongMA and not showShortMA and ta.crossover(maLong, close))

// แสดงค่าเส้นค่าเฉลี่ยเคลื่อนที่บนกราฟ
plot(maShort, color=color.red, title="MA Short")
plot(maLong, color=color.green, title="MA Long")

// คำนวณค่า Stochastic RSI
smoothK = 3
smoothD = 3
RSIlen = 14
STOlen = 14
SRsrc = close
OSlevel = 30
OBlevel = 70

rsi1 = ta.rsi(SRsrc, RSIlen)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, STOlen), smoothK)
d = ta.sma(k, smoothD)

stochRSIOverbought = OBlevel
stochRSIOversold = OSlevel

stochRSIBuyAlert = ta.crossover(k, stochRSIOversold)
stochRSISellAlert = ta.crossunder(k, stochRSIOverbought)

// สร้างคำสั่งซื้อและขายเมื่อมีสัญญาณจาก RSI และ MA เท่านั้น
if (buySignal)
    strategy.entry("Buy", strategy.long)
if (sellSignal)
    strategy.close("Buy")

// แสดงสัญญาณเตือนจาก Stochastic RSI บนกราฟ
plotshape(series=stochRSIBuyAlert, location=location.belowbar, color=color.green, style=shape.labelup, title="StochRSI Buy Alert")
plotshape(series=stochRSISellAlert, location=location.abovebar, color=color.red, style=shape.labeldown, title="StochRSI Sell Alert")

// แสดงสัญญาณซื้อและขายจาก RSI และ MA บนกราฟ
plotshape(series=buySignal, location=location.top, color=color.green, style=shape.triangleup, title="RSI>70")
plotshape(series=sellSignal, location=location.top, color=color.red, style=shape.triangledown, title="MA crossoverDown")