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

Автор:Чао Чжан, Дата: 15 ноября 2023 15:30:43
Тэги:

img

Обзор

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

Логика стратегии

  1. График 34-периодических полос Боллинджера с центральной линией, 1 днём девальвации и 2 днём девальвации.

  2. Введите длинный, когда близкий перерыв выше верхней полосы, введите короткий, когда близкий перерыв ниже нижней полосы.

  3. Закрыть длинную позицию при закрытии пересечений ниже центральной линии, закрыть короткую позицию при закрытии пересечений выше центральной линии.

  4. Использовать RSI>70 в качестве дополнительного подтверждения для длинного, RSI<30 в качестве подтверждения для короткого.

  5. Закрыть короткие позиции, когда RSI превышает 50, закрыть длинные позиции, когда RSI превышает 50.

  6. Используйте кроссовер MACD в качестве дополнительного фильтра для записей, кроссовер MACD для длинных, кроссовер MACD для коротких.

  7. Закрыть длинные позиции на перекрестке MACD, закрыть короткие позиции на перекрестке MACD.

  8. Требует, чтобы все 3 индикатора выровнялись перед входом в торговлю, несколько фильтров уменьшают ложные сигналы.

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

Сочетание сигналов из нескольких индикаторов уменьшает ложные сигналы и повышает рентабельность.

Строгие правила стоп-лосса, основанные на диапазонах и показателях, ограничивают потери на каждой сделке.

По сравнению с едиными индикаторными стратегиями, объединение индикаторов улучшает производительность. Многочисленные фильтры исключают плохие сигналы. Механизм остановки потери контролирует влияние потери.

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

Риски

Основными рисками являются:

  1. Возможность ложных сигналов от индикаторов.

  2. Невозможность получать прибыль на рынках с ограниченным диапазоном. Стоп-лосс может привести к потере во время консолидации. Правила стоп-лосса могут быть ослаблены, чтобы держать сделки дольше.

  3. Более продвинутые индикаторы могут помочь захватить повороты раньше.

  4. Использование отстающих остановок или среднего снижения может лучше контролировать потери.

  5. Фиксированные параметры могут потребовать корректировки для разных рынков.

  6. Недостаточное тестирование, что приводит к чрезмерному приспособлению.

Возможности для расширения

Стратегия может быть улучшена несколькими способами:

  1. Оптимизируйте параметры индикатора, чтобы найти лучшие комбинации, которые минимизируют ложные сигналы.

  2. Включайте адаптивную стоп-потерю вместо фиксированной стоп-потерь в средней полосе.

  3. Использование машинного обучения для адаптивной оптимизации параметров при изменяющихся условиях, например, обучение с усилением.

  4. Добавление правил обнаружения трендов для использования различных тактик для различных фаз рынка.

  5. Включайте настроения, данные социальных сетей для улучшения многофакторного прогнозирования и ведущих показателей.

  6. Использовать совокупное распределение размеров позиций на основе растущего размера счета для экспоненциального роста.

  7. Оптимизировать комбинации с некоррелирующими стратегиями для снижения волатильности портфеля посредством диверсификации.

Заключение

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


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Bollinger Bands: Madrid : 14/SEP/2014 11:07 : 2.0
// This displays the traditional Bollinger Bands, the difference is 
// that the 1st and 2nd StdDev are outlined with two colors and two
// different levels, one for each Standard Deviation

strategy(shorttitle='MBB', title='Bollinger Bands', overlay=true, currency=currency.NONE, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_value = 0.05)
src = input(close)
length = input.int(34, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)

basis = ta.sma(src, length)
dev = ta.stdev(src, length)
dev2 = mult * dev

upper1 = basis + dev
lower1 = basis - dev
upper2 = basis + dev2
lower2 = basis - dev2

colorBasis = src >= basis ? color.blue : color.orange

pBasis = plot(basis, linewidth=2, color=colorBasis)
pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles)
pUpper2 = plot(upper2, color=color.new(color.blue, 0))
pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles)
pLower2 = plot(lower2, color=color.new(color.orange, 0))

fill(pBasis, pUpper2, color=color.new(color.blue, 80))
fill(pUpper1, pUpper2, color=color.new(color.blue, 80))
fill(pBasis, pLower2, color=color.new(color.orange, 80))
fill(pLower1, pLower2, color=color.new(color.orange, 80))


//Strategy code starts here

long_entry = ta.crossover(src, upper1)
short_entry = ta.crossunder(src, lower1)

strategy.entry("Long", strategy.long, when=long_entry)
strategy.entry("Short", strategy.short, when=short_entry)

if long_entry or close < basis
    strategy.close("Long", "Long") 

if short_entry or close > basis
    strategy.close("Short", "Short") 


//Calculate RSI
rsiLength = input(14)
rsiValue = ta.rsi(src, rsiLength)

// Define RSI conditions for entering and exiting trades
rsiLong = rsiValue > 70
rsiShort = rsiValue < 30


//Enter long position when RSI crosses above 50 and Bollinger Bands long entry condition is met
strategy.entry("Long", strategy.long, when=long_entry and rsiLong)

//Exit long position when RSI crosses below 50 or Bollinger Bands exit condition is met
strategy.close("Long Exit", when=rsiShort or close < basis)

//Enter short position when RSI crosses below 50 and Bollinger Bands short entry condition is met
strategy.entry("Short", strategy.short, when=short_entry and rsiShort)

//Exit short position when RSI crosses above 50 or Bollinger Bands exit condition is met
strategy.close("Short Exit", when=rsiLong or close > basis)



//Calculate MACD
fastLength = input(12)
slowLength = input(26)
macdLength = input(9)
macdValue = ta.macd(src, fastLength, slowLength, macdLength)

// Define MACD conditions for entering and exiting trades
macdLong = ta.crossover(src, macdLength)
macdShort = ta.crossunder(src, macdLength)

//Enter long position when MACD crosses above signal line and RSI and Bollinger Bands long entry condition is met
strategy.entry("Long", strategy.long, when=long_entry and rsiLong and macdLong)

//Exit long position when MACD crosses below signal line or RSI crosses below 50 or Bollinger Bands exit condition is met
strategy.close("Long Exit", when=macdShort or rsiShort or close < basis)

//Enter short position when MACD crosses below signal line and RSI crosses below 50 and Bollinger Bands short entry condition is met
strategy.entry("Short", strategy.short, when=short_entry and rsiShort and macdShort)

//Exit short position when MACD crosses above signal line or RSI crosses above 50 or Bollinger Bands exit condition is met
strategy.close("Short Exit", when=macdLong or rsiLong or close > basis)

Больше