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

Автор:Чао Чжан, Дата: 2023-09-27 16:52:05
Тэги:

Обзор

Эта стратегия идентифицирует ценовые каналы с использованием полос Боллинджера и определяет уровни поддержки / сопротивления на основе коэффициентов ретракциона Фибоначчи для алгоритмической торговли.

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

  1. Расчет средних, верхних и нижних полос полос Боллинджера

    • Средняя полоса - SMA, верхняя/нижняя полосы - SMA +/- кратны ATR

    • Болинджерские полосы расширяются и сокращаются на основе волатильности рынка

  2. Вычисление уровней ретрассемента Фибоначчи на основе коэффициентов

    • Коэффициенты ретрекемента - кратны коэффициентам ATR * Фибоначчи

    • Уровень множественного Fib рассчитывается на основе средней полосы

  3. Наблюдение за ценовым выходом из полос Боллинджера

    • Подумайте о покупке длинной сделки, когда цена превысит верхнюю полосу.

    • Подумайте о покупке, когда цена опустится ниже нижней полосы.

  4. Вступление в сделку и установка SL/TP вокруг зон ретрассемента Fib

    • Введите сделки, когда цена возвращается в зону Fib

    • Установите стоп-лосс и возьмите прибыль на другой стороне зоны

Анализ преимуществ

  • Боллингерские полосы четко определяют диапазон и тенденции волатильности рынка

  • Коэффициенты Фибоначчи определяют ключевые уровни поддержки и сопротивления

  • Сочетание индикаторов позволяет осуществлять алгоритмическую торговлю

  • Сдвиги увеличивают вероятность успеха и избегают преследования

  • Параметры, поддающиеся регулировке, адаптируются к различным периодам и продуктам

Анализ рисков

  • Прорывы Bollinger Bands могут быть ложными сигналами

  • Трудно точно предсказать, когда цена вернется к уровню ФИБ

  • Неправильное размещение стоп-лосса может увеличить убытки

  • Недостаточная или чрезмерная величина отзыва влияет на стратегию

  • Неэффективные параметры или постоянные тенденции рынков могут привести к отмене стратегии

  • Улучшение логики полос Боллинджера, учитывая объем, динамическую зону корректировки и т.д.

Руководство по оптимизации

  • Оптимизировать параметры полос Боллинджера для улучшения тренда и оценки S/R

  • Добавить индикаторы объема для проверки сигналов прорыва

  • Использование машинного обучения для прогнозирования вероятности отклонения

  • Включить больше технических показателей для проверки сигналов

  • Выбор разумных параметров на основе характеристик продукта и торговых сеансов

  • Своевременно корректировать силу зоны отступления для изменения волатильности

Заключение

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


/*backtest
start: 2023-08-27 00:00:00
end: 2023-09-26 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle="BBands Fibo", title="Bollinger Bands Fibonacci Ratios", overlay=true)

length      =   input(20, minval=1, type=input.integer, title="Length")
src         =   input(close, title="Source")
offset      =   input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
fibo1       =   input(defval=1.618, title="Fibonacci Ratio 1")
fibo2       =   input(defval=2.618, title="Fibonacci Ratio 2")
fibo3       =   input(defval=4.236, title="Fibonacci Ratio 3")

fiboBuyReverse = input(false, title = "Use Reverse Buy?")
fiboBuy       =   input(options = ["Fibo 1", "Fibo 2", "Fibo 3"],defval = "Fibo 1", title="Fibonacci Buy")
fiboSellReverse = input(false, title = "Use Reverse Sell?")
fiboSell       =   input(options = ["Fibo 1", "Fibo 2", "Fibo 3"],defval = "Fibo 1", title="Fibonacci Sell")

sma = sma(src, length)
atr = atr(length)

ratio1 = atr * fibo1
ratio2 = atr * fibo2
ratio3 = atr * fibo3

upper3 = sma + ratio3
upper2 = sma + ratio2
upper1 = sma + ratio1

lower1 = sma - ratio1
lower2 = sma - ratio2
lower3 = sma - ratio3

plot(sma, style=0, title="Basis", color=color.orange, linewidth=2, offset = offset)

upp3 = plot(upper3, transp=90, title="Upper 3", color=color.teal, offset = offset)
upp2 = plot(upper2, transp=60, title="Upper 2", color=color.teal, offset = offset)
upp1 = plot(upper1, transp=30, title="Upper 1", color=color.teal, offset = offset)

low1 = plot(lower1, transp=30, title="Lower 1", color=color.teal, offset = offset)
low2 = plot(lower2, transp=60, title="Lower 2", color=color.teal, offset = offset)
low3 = plot(lower3, transp=90, title="Lower 3", color=color.teal, offset = offset)

fill(upp3, low3, title = "Background", color=color.new(color.teal, 95))

targetBuy = fiboBuy == "Fibo 1" ? upper1 : fiboBuy == "Fibo 2" ? upper2 : upper3
targetBuy := fiboBuyReverse == false ? targetBuy : fiboBuy == "Fibo 1" ? lower1 : fiboBuy == "Fibo 2" ? lower2 : lower3
buy = low < targetBuy and high > targetBuy

targetSell = fiboSell == "Fibo 1" ? lower1 : fiboSell == "Fibo 2" ? lower2 : lower3
targetSell := fiboSellReverse == false ? targetSell : fiboSell == "Fibo 1" ? upper1 : fiboSell == "Fibo 2" ? upper2 : upper3
sell = low < targetSell and high > targetSell

strategy.entry("Buy", true, when = buy)
strategy.entry("Sell", false, when = sell)


Больше