Болинджерские полосы + RSI + двойная стратегия торговли EMA

Автор:Чао Чжан, Дата: 2023-12-29 14:46:57
Тэги:

img

Обзор

Эта стратегия объединяет три индикатора Болинджерских полос, индекса относительной силы (RSI) и экспоненциальной скользящей средней (EMA), чтобы реализовать автоматическую торговую стратегию с длительными периодами хранения для акций. Она генерирует сигналы покупки, когда RSI ниже линии перепродажи, а цена близка или касается нижней рельсы Болинджерских полос, и генерирует сигналы продажи, когда цена повышается, чтобы коснуться верхней рельсы Болинджерских полос, используя Болинджерские полосы для определения рыночных тенденций и статуса перекупленного / перепроданного для двойного подтверждения.

Принцип стратегии

Эта стратегия в основном оценивает на основе трех индикаторов: полос Боллинджера, RSI и EMA. Средняя рельса в полосах Боллинджера - это простое скользящее среднее значение цены, а верхняя и нижняя рельсы - два диапазона стандартного отклонения цены. Полосы Боллинджера могут судить о состоянии перекупленности / перепроданности рынка. Когда цена близка к нижней рельсе, это указывает на состояние перепроданности, а когда цена близка к верхней рельсе, это указывает на состояние перепроданности. RSI является одним из важных индикаторов для оценки того, является ли акция перекупленной или перепроданной. RSI ниже 30 указывает на состояние перепроданности, а RSI выше 70 указывает на состояние перепроданности. EMA является экспоненциально взвешенной скользящей средней цены и может определять тренд цен.

Сигнал покупки для этой стратегии генерируется, когда RSI находится ниже линии перепроданности 30 и в то же время цена приблизилась или коснулась нижней рельсы полос Боллинджера в состоянии перепроданности.

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

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

  1. Интегрирует полосы Боллинджера и RSI для двойного подтверждения состояния перекупленности/перепроданности, избегая ложных сигналов.
  2. Использует EMA для определения направления тренда цен, избегая торговли против тренда.
  3. Параметры как для RSI, так и для Bollinger Bands можно настроить для разных акций.
  4. Простая и понятная логика стратегии, легко понятная и реализуемая.

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

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

Решения:

  1. Сократить период полос Боллинджера, оптимизировать параметры RSI.
  2. Динамическая стоп-потеря.
  3. Интегрировать другие индикаторы для определения тенденции.
  4. Испытайте различные параметры, чтобы найти оптимальную комбинацию.

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

Стратегия может быть дополнительно оптимизирована в следующих аспектах:

  1. Добавить дополнительные показатели для оценки, например, KD для состояния перекупленности/перепроданности.
  2. Добавьте механизмы остановки потери, такие как перемещение остановки потери, зоны остановки потери для управления рисками.
  3. Добавить правила выхода, основанные на определении тенденции EMA в условиях продажи.
  4. Оптимизировать настройки параметров для расширения диапазона прибыли, например, регулировать ширину полос Боллинджера.
  5. Добавить правила ввода для предотвращения ложных прорывов, например, фильтры объема.

Заключение

Стратегия объединяет полосы Боллинджера, RSI и EMA для автоматической стратегии длинного хранения с двойными фильтрами подтверждения. Двойная подтверждение для состояния перекупленности/перепроданности эффективно избегает ложных сигналов, а использование EMA для определения тренда предотвращает торговлю против тренда. Между тем, гибкие параметры делают ее адаптивной к различным акциям. Дальнейшее улучшение аспектов механизмов остановки потерь и выхода может повысить эффективность и управление рисками стратегии. Стратегия обеспечивает ценную референсную базу для новичков и имеет практическое значение.


/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Bollinger + RSI + EMA, Double Strategy Long-Only (by ChartArt) v1.3", shorttitle="rsi 30 min ADJ Buy", overlay=true)

///////////// RSI
RSIlength = input(2, title="RSI Period Length") // Adjusted RSI period length
RSIoverSold = input(30, title="RSI Oversold Level")  // Adjustable RSI oversold level
RSIoverBought = input(80, title="RSI Overbought Level")  // Adjustable RSI overbought level
price = close
vrsi = rsi(price, RSIlength)

///////////// Bollinger Bands
BBlength = input(231, minval=1, title="Bollinger Period Length") // Adjusted Bollinger period length
BBmult = 2
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev

///////////// EMA
useEMA = input(true, title="Use EMA?")
emaLength = input(20, title="EMA Period Length")
ema = useEMA ? ema(close, emaLength) : na

source = close
buyEntry = crossover(source, BBlower) or (close < BBlower and close > BBbasis) or (low < BBlower and close > BBbasis) // Add condition for low touching Bollinger Band
sellEntry = crossunder(source, BBupper)

///////////// Plotting
plot(BBbasis, color=color.aqua, title="Bollinger Bands SMA Basis Line")
plot(BBupper, color=color.silver, title="Bollinger Bands Upper Line")
plot(BBlower, color=color.silver, title="Bollinger Bands Lower Line")
plot(ema, color=color.orange, title="EMA")  // Plot EMA

///////////// RSI + Bollinger Bands Strategy
long = crossover(vrsi, RSIoverSold) and buyEntry
close_long = close >= BBupper

if (not na(vrsi))
    if long
        strategy.entry("Buy", strategy.long, qty=10, stop=BBlower, comment="Buy")
    else
        strategy.cancel(id="Buy")
        
    if close_long
        strategy.close("Buy")


Больше