Эта стратегия использует полосы Боллинджера, индикатор RSI и скользящую среднюю за 200 периодов, чтобы определить направление тренда и ввести контратендентные сделки вблизи полос Боллинджера, когда направление тренда является подходящим, чтобы получить прибыль.
Во-первых, 200-периодный скользящий средний используется для определения общего направления тренда. Увеличительный тренд определяется, когда цена выше скользящего среднего, а понижающийся - когда цена ниже. Во-вторых, когда в восходящем тренде, длинный вход выполняется, если индикатор RSI показывает перепроданность и приближается к нижней полосе Боллинджера; когда в нисходящем тренде, короткий вход выполняется, если RSI показывает перекупленность и приближается к верхней полосе Боллинджера. Наконец, индикатор ATR используется для установки уровня стоп-лосса, и прибыль на получение прибыли устанавливается в 2 раза больше стоп-лосса.
Наибольшее преимущество этой стратегии заключается в том, что она сочетает в себе несколько индикаторов для определения направления тренда и сроков входа. Во-первых, 200-дневная скользящая средняя может эффективно идентифицировать основную тенденцию. Во-вторых, верхние/нижние полосы полос Боллинджера указывают на области, где цены могут перевернуться. Наконец, RSI предполагает возможное время переворота. Использование нескольких индикаторов избегает риска ошибочного суждения от одного.
Основные риски этой стратегии происходят от неточной идентификации основных тенденций и сигналов обворота. Если тенденция неправильно оценена, это может привести к последовательным потерям. Если сигналы обворота ошибочны, вероятность того, что будет инициирована остановка убытков, будет высокой. Кроме того, сама торговля против тренда имеет более высокие риски, которые требуют осторожной операции.
Для смягчения вышеуказанных рисков целесообразно корректировать параметры скользящей средней или добавить другие индикаторы для подтверждения, чтобы повысить точность.
Есть большое пространство для оптимизации этой стратегии: во-первых, скорректировать параметры скользящей средней, чтобы улучшить точность идентификации тренда. Во-вторых, настроить параметры полос Боллинджера или добавить Кальманские каналы, чтобы лучше определить зоны реверсии. В-третьих, добавить другие индикаторы, такие как MACD для подтверждения, чтобы избежать неправильных сигналов. В-четвертых, оптимизировать установку коэффициента стоп-лосса, чтобы снизить вероятность фактических событий стоп-лосса.
Эта стратегия объединяет полосы Боллинджера, RSI и скользящие средние для определения тенденций и сроков, и достигла хороших результатов. Но для улучшения стабильности прибыли необходима дальнейшая оптимизация настроения параметров и контроля рисков. В целом, с четкой логикой и легкой реализацией, это стоит дальнейших исследований и применения.
/*backtest start: 2023-11-19 00:00:00 end: 2023-12-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Gab EMA + rsi + bb", overlay=true) // Custom RSI RSIlength = input(3, minval=1 , title="lookback length of RSI") RSIOverBought = input(70, title="RSI OB") RSIOverSold = input(30, title="RSI OS") RSIprice = close vrsi = rsi(RSIprice, RSIlength) //Bollinger Bands BBlength = input(20, minval=1,title="Bollinger Period Length") BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Bands Standard Deviation") BBbasis = sma(close, BBlength) BBdev = BBmult * stdev(close, BBlength) BBupper = BBbasis + BBdev BBlower = BBbasis - BBdev source = close //EMA emaLength=input(200) //Set TP and SL values sl_short = high + (syminfo.mintick * 5 * 10) tp_short = low - (syminfo.mintick * 10 * 10) sl_long = low - (syminfo.mintick * 5 * 10) tp_long = high + (syminfo.mintick * 10 * 10) //Strategy Entry and Exit strategy.entry("sell", strategy.short, when = low < ema(low, emaLength) and vrsi < RSIOverSold and low < BBlower and barstate.isconfirmed) strategy.exit("closeshort", from_entry="sell", limit=tp_short, stop=sl_short, when=strategy.position_size != 0) strategy.entry("buy", strategy.long, when = high > ema(high, emaLength) and vrsi > RSIOverBought and high > BBupper and barstate.isconfirmed) strategy.exit("closelong", from_entry="buy", limit=tp_long, stop=sl_long, when=strategy.position_size != 0)