Стратегия тренда на основе полос Боллинджера + RSI + нескольких скользящих средних

BB RSI MA SMA MACD
Дата создания: 2024-05-27 15:20:40 Последнее изменение: 2024-05-27 15:20:40
Копировать: 2 Количество просмотров: 1189
1
Подписаться
1617
Подписчики

Стратегия тренда на основе полос Боллинджера + RSI + нескольких скользящих средних

Обзор

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

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

  1. Используя 20-циклические, в 2 раза худшие по стандарту, буринские полосы, можно судить о тренде по положению цены закрытия относительно средней орбиты буринских полос.
  2. Рассчитывается 14-циклический RSI и определяется перепродажа и перекуп через перекрестку RSI с уровнями 30 и 70, чтобы определить потенциальный обратный курс.
  3. Вычислите простые скользящие средние за 34, 89, 144, 233, 377 и 610 циклов, чтобы подтвердить тенденцию с помощью многоугольного ряда средних линий, которые также могут служить в качестве поддерживающих уровней сопротивления.
  4. MACD-показатель рассчитывается на основе параметров 12, 26 и 9 и помогает определить обратный тренд через перекрестку столбика MACD с 0-й осью.
  5. В результате анализа вышеперечисленных показателей можно выработать логику открытия позиций:
    • Открытие позиции: открытие сверхпозиции, когда цена закрытия находится выше средней полосы Брин, а краткосрочная средняя линия выше долгосрочной средней линии.
    • Равновесные позиции: пол-позиции при падении цены на закрытие от средней орбиты по Бринскому поясу, пол-позиции при падении средней долгосрочной линии от средней краткосрочной линии.

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

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

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

  1. В случае возникновения толчков, в поясах Брин и равнолинейных системах могут возникать часто и противоречивые сигналы.
  2. RSI и MACD могут оставаться в зоне перепродажи в условиях сильного тренда и терять свою правоту.
  3. Выбор параметров (например, циклы в поясах Бурин, циклы средней линии и т. д.) имеет определенную субъективность, и разные параметры могут привести к разным результатам.
  4. Отсутствие механизма хранения убытков может привести к увеличению риска для отдельных сделок.
  5. В случае с экстремальными явлениями, такими как черная лебедь, возможно, не будет возможности своевременного реагирования, что приведет к значительному отступлению.

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

  1. Более систематическая оптимизация параметров различных индикаторов, таких как циклы и ширина ленты Брин, циклы и пороги RSI и т. д.
  2. Внедрение дополнительных сигналов подтверждения, таких как изменения в объеме, повышает надежность сигналов.
  3. В условиях открытия позиций введены механизмы остановки и остановки, чтобы лучше контролировать риски по отдельным сделкам.
  4. Рассмотреть возможность внедрения механизмов корректировки позиций с возможностью гибкой корректировки позиций в различных рыночных условиях, повышая риск-доходность.
  5. Дизайн для экстремальных сценариев, таких как хеджирование на основе индекса VIX или динамическая нагрузка на фактор Alpha.

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

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

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

//@version=5
strategy("Bollinger Bands + RSI Strategy with MA", overlay=true)

// Bollinger Bands
length = input.int(20, title="BB Length")
mult = input.float(2.0, title="BB Mult")
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper_band = basis + dev
lower_band = basis - dev

// RSI
rsi_length = input.int(14, title="RSI Length")
rsi_oversold = input.int(30, title="RSI Oversold", minval=0, maxval=100)
rsi_overbought = input.int(70, title="RSI Overbought", minval=0, maxval=100)
rsi = ta.rsi(close, rsi_length)

// RSI Divergence
rsi_divergence_bottom = ta.crossunder(rsi, rsi_oversold)
rsi_divergence_peak = ta.crossunder(rsi_overbought, rsi)

// Moving Averages
ma34 = ta.sma(close, 34)
ma89 = ta.sma(close, 89)
ma144 = ta.sma(close, 144)
ma233 = ta.sma(close, 233)
ma377 = ta.sma(close, 377)
ma610 = ta.sma(close, 610)

// MACD Calculation
[macd_line, signal_line, _] = ta.macd(close, 12, 26, 9)
macd_histogram = macd_line - signal_line

// MACD Divergence
macd_divergence_bottom = ta.crossunder(macd_histogram, 0)
macd_divergence_peak = ta.crossover(macd_histogram, 0)

// Conditions for Buy and Sell
basis_gt_ma34 = basis > ma34
ma34_gt_ma89 = ma34 > ma89

// Entry condition
buy_condition = basis_gt_ma34 and ma34_gt_ma89 
sell_condition =  basis <ma34

// Calculate position size
position_size = 1.0  // 100% capital initially

// Update position size based on conditions
if (sell_condition)
    position_size := 0.5  // Sell half of the position
if (not basis_gt_ma34)
    position_size := 0.0  // Sell all if basis < ma34

// Entry and exit strategy
if (buy_condition)
    strategy.entry("Buy", strategy.long, qty=position_size)
if (sell_condition)
    strategy.close("Buy")

// Plot Bollinger Bands and Moving Averages
bb_fill_color = basis > basis[1] ? color.new(color.blue, 90) : color.new(color.blue, 10)
plot(basis, color=color.blue, title="Basis")
plot(upper_band, color=color.red, title="Upper Band")
plot(lower_band, color=color.green, title="Lower Band")
fill(plot1=plot(upper_band), plot2=plot(lower_band), color=bb_fill_color, title="BB Fill")
plot(ma34, color=color.orange, title="MA34")
plot(ma89, color=color.purple, title="MA89")
plot(ma144, color=color.gray, title="MA144")
plot(ma233, color=color.blue, title="MA233")
plot(ma377, color=color.red, title="MA377")
plot(ma610, color=color.green, title="MA610")

// Plot RSI Divergence
plotshape(series=rsi_divergence_bottom, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.small)
plotshape(series=rsi_divergence_peak, style=shape.triangledown, location=location.belowbar, color=color.red, size=size.small)

// Plot MACD Histogram Divergence
plotshape(series=macd_divergence_bottom, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(series=macd_divergence_peak, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)