Эта стратегия объединяет три индикатора Болинджерских полос, индекса относительной силы (RSI) и экспоненциальной скользящей средней (EMA), чтобы реализовать автоматическую торговую стратегию с длительными периодами хранения для акций. Она генерирует сигналы покупки, когда RSI ниже линии перепродажи, а цена близка или касается нижней рельсы Болинджерских полос, и генерирует сигналы продажи, когда цена повышается, чтобы коснуться верхней рельсы Болинджерских полос, используя Болинджерские полосы для определения рыночных тенденций и статуса перекупленного / перепроданного для двойного подтверждения.
Эта стратегия в основном оценивает на основе трех индикаторов: полос Боллинджера, RSI и EMA. Средняя рельса в полосах Боллинджера - это простое скользящее среднее значение цены, а верхняя и нижняя рельсы - два диапазона стандартного отклонения цены. Полосы Боллинджера могут судить о состоянии перекупленности / перепроданности рынка. Когда цена близка к нижней рельсе, это указывает на состояние перепроданности, а когда цена близка к верхней рельсе, это указывает на состояние перепроданности. RSI является одним из важных индикаторов для оценки того, является ли акция перекупленной или перепроданной. RSI ниже 30 указывает на состояние перепроданности, а RSI выше 70 указывает на состояние перепроданности. EMA является экспоненциально взвешенной скользящей средней цены и может определять тренд цен.
Сигнал покупки для этой стратегии генерируется, когда RSI находится ниже линии перепроданности 30 и в то же время цена приблизилась или коснулась нижней рельсы полос Боллинджера в состоянии перепроданности.
Сигнал продажи генерируется, когда цена касается верхней рельсы полос Боллинджера во время восходящего тренда. Это использует полосы Боллинджера для определения статуса перекупленности и продает для получения прибыли.
Решения:
Стратегия может быть дополнительно оптимизирована в следующих аспектах:
Стратегия объединяет полосы Боллинджера, 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")