Торговые стратегии на основе полос Боллинджера и Фибоначчи


Дата создания: 2023-09-21 21:04:38 Последнее изменение: 2023-09-21 21:04:38
Копировать: 2 Количество просмотров: 1261
1
Подписаться
1617
Подписчики

Обзор

Эта стратегия объединяет индикаторы Брин-Бенда и Фибоначского отступления и позволяет торговать в многоиндикаторном портфеле. Она является типичным типом стратегии по комбинационным показателям. Стратегия определяет направление тренда с помощью Брин-Бенда, а Фибоначское отступление определяет ключевую поддерживающую сопротивляющую позицию, в результате чего создается торговый сигнал.

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

Эта стратегия основана на следующих двух показателях:

  1. Брин-пояс

Расчет верхних, средних и нижних треков в поясе бурин. При прорыве цены вниз - это сигнал плюс, а при прорыве вверх - сигнал пустоты.

  1. Фибонач отступил

На основе исторических максимумов и минимумов рассчитываются два важных фибоначевых отступления: 0% и 100%. Эти два момента могут служить ключевыми уровнями поддержки и сопротивления.

Конкретная логика сделки:

Более сигнала: цена вверх по Бринской полосе и находится на 0% над поддержкой Фибоначчи

Сигналы об отрыве: цена пересекает Бринскую полосу и находится ниже 100% сопротивления Фибоначчи

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

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

  • Сочетание двух индикаторов Брин-Бенда и Фибоначчи
  • Брин берет курс на тенденции, Фибонач определяет ключевые точки
  • Сочетание двух фильтров с меньшей вероятностью ошибочного сигнала
  • Остановка тормозной остановки вблизи средней полосы, отвод управления в строй
  • Правила входа и выхода понятны и просты в использовании

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

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

Снизить риск можно, приняв следующие меры:

  • Оптимизируйте параметры, чтобы найти оптимальную комбинацию параметров
  • Надлежащее смягчение условий входа, например, добавление формы K-линии
  • Оптимизация механизмов остановки, например, отслеживание остановки
  • Оптимальные параметры для тестирования различных сортов
  • Соответствующая корректировка системы управления позициями

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

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Оптимизация параметров Брин-полосы

Поиск оптимальных параметров для расчета пропорций вверх и вниз

  1. Оптимизация цикла отзыва Фибоначчи

Различные циклические параметры, по которым тестируется вычисление отступления

  1. Упрощенные условия приема

Например, наблюдение формы K-линии при прорыве Бринской полосы

  1. Оптимизация механизма остановки

Подумайте о том, как остановить убытки с функцией отслеживания

  1. Испытания на разных сортах

Параметры разных сортов не всегда одинаковы, и их нужно корректировать.

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

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

Исходный код стратегии
/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands & Fibonacci Strategy", shorttitle="BB & Fib Strategy", overlay=true)

// Initialize position variables
var bool long_position = false
var bool short_position = false

// Bollinger Bands settings
length = input.int(20, title="Bollinger Bands Length")
src = input(close, title="Source")
mult = input.float(2.0, title="Standard Deviation Multiplier")

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

upper_band = basis + dev
lower_band = basis - dev

// Fibonacci retracement levels
fib_0 = input.float(0.0, title="Fibonacci 0% Level", minval=-100, maxval=100) / 100
fib_100 = input.float(1.0, title="Fibonacci 100% Level", minval=-100, maxval=100) / 100

// Plotting Bollinger Bands
plot(upper_band, color=color.red, title="Upper Bollinger Band")
plot(lower_band, color=color.green, title="Lower Bollinger Band")

// Calculate Fibonacci levels
fib_range = ta.highest(high, 50) - ta.lowest(low, 50)
fib_high = ta.highest(high, 50) - fib_range * fib_0
fib_low = ta.lowest(low, 50) + fib_range * fib_100

// Plot Fibonacci retracement levels
plot(fib_high, color=color.blue, title="Fibonacci High")
plot(fib_low, color=color.orange, title="Fibonacci Low")

// Entry conditions
long_condition = ta.crossover(close, upper_band) and low > fib_low
short_condition = ta.crossunder(close, lower_band) and high < fib_high

// Plot arrows on the chart
plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// Entry and exit logic
if long_condition and not short_position
    strategy.entry("Long", strategy.long)
    long_position := true
    short_position := false

if short_condition and not long_position
    strategy.entry("Short", strategy.short)
    short_position := true
    long_position := false

// Exit conditions (you can customize these)
long_exit_condition = ta.crossunder(close, basis)
short_exit_condition = ta.crossover(close, basis)

if long_exit_condition
    strategy.close("Long")
    long_position := false

if short_exit_condition
    strategy.close("Short")
    short_position := false