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


Дата создания: 2024-02-02 11:35:17 Последнее изменение: 2024-02-02 11:35:17
Копировать: 0 Количество просмотров: 640
1
Подписаться
1617
Подписчики

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

Обзор

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

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

Эта стратегия использует два параметра, отличающихся от бурин, для создания ценового канала. По умолчанию бурин имеет длину 20 циклов и стандартную разницу 2. Верхние и нижние колеи бурин действуют как динамические сопротивления и поддержки.

RSI используется для определения силы и слабости ценовой динамики.

В стратегию также интегрированы 50-циклические скользящие средние для определения направления общей тенденции. Когда цена выше скользящей средней, это означает, что она находится в восходящей тенденции; когда цена ниже скользящей средней, это означает, что она находится в нисходящей тенденции.

Условия для покупки: RSI выше линейки сверхпокупок и отсутствие сжатия в буринской зоне.

Условия для продажи: RSI ниже линии oversold и отсутствие сжатия буринской линии.

Условия для сигналов о равновесии: длинная позиция закрывается ниже скользящей средней; короткая позиция закрывается выше скользящей средней;

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

  1. В сочетании с тремя индикаторами: Brin, RSI и Moving Average, можно судить о направлении тренда и избежать ложных сигналов.

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

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

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

  1. При сжатии буринской полосы может возникнуть ошибочный сигнал. В это время RSI также приближается к нейтральной зоне, поэтому следует избегать торгов.

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

  3. Невозможность эффективного устранения пробелов в цене. Реалистичность пробелов должна быть определена в сочетании с другими показателями.

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

  1. Оптимизация параметров Брин-Бенда и RSI, чтобы они соответствовали характеристикам разных сортов и временных периодов.

  2. Добавлена дополнительная установка Stop Loss. Автоматическая остановка при переходе цены через Stop Loss.

  3. Добавление трендовых фильтров, таких как ADX, для определения того, вошли ли вы в трендовую ситуацию.

  4. В сочетании с автоматической торговой системой, используя генерируемые торговые сигналы, сделки выполняются автоматически, без вмешательства человека.

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

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

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

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

// Define input variables
b_len = input(20, title="BB Length")
bb_mult = input(2.0, title="BB Standard Deviation")
bb_deviation1 = input(1.0, title="BB Deviation 1")
rsi_len = input(14, title="RSI Length")
overbought = input(70, title="Overbought RSI Level")
oversold = input(30, title="Oversold RSI Level")
ma_len = input(50, title="MA Length")
stop_loss_percent = input(1.0, title="Stop Loss Percentage")
source = input(close, title="Source")

// Calculate Bollinger Bands
bb_upper = ta.sma(source, b_len) + bb_mult * ta.stdev(source, b_len)
bb_lower = ta.sma(source, b_len) - bb_mult * ta.stdev(source, b_len)
bb_upper1 = ta.sma(source, b_len) + bb_deviation1 * ta.stdev(source, b_len)
bb_lower1 = ta.sma(source, b_len) - bb_deviation1 * ta.stdev(source, b_len)

// Calculate RSI
rsi = ta.rsi(source, rsi_len)

// Calculate Moving Average
ma = ta.sma(source, ma_len)

// Determine if Bollinger Bands are contracting
bb_contracting = ta.stdev(source, b_len) < ta.stdev(source, b_len)[1]

// Entry conditions
enterLong = rsi > overbought and not bb_contracting
enterShort = rsi < oversold and not bb_contracting

// Exit conditions
exitLong = close < ma
exitShort = close > ma

// Exit trades and generate alerts
if strategy.position_size > 0 and exitLong
    strategy.close("Long") // Exit the long trade
    alert("Long Exit", alert.freq_once_per_bar_close)
if strategy.position_size < 0 and exitShort
    strategy.close("Short") // Exit the short trade
    alert("Short Exit", alert.freq_once_per_bar_close)

// Strategy orders
if enterLong
    strategy.entry("Long", strategy.long)
if enterShort
    strategy.entry("Short", strategy.short)
if exitLong
    strategy.close("Long")
if exitShort
    strategy.close("Short")

// Plotting Bollinger Bands
plot(bb_upper, color=color.blue, title="BB Upper 2")
plot(bb_lower, color=color.blue, title="BB Lower 2")
plot(bb_upper1, color=color.red, title="BB Upper 1")
plot(bb_lower1, color=color.red, title="BB Lower 1")

// Plotting RSI
plot(rsi, color=color.orange, title="RSI")

// Plotting Moving Average
plot(ma, color=color.green, title="Moving Average")