Стратегия торговли Bollinger Bands Breakout

Автор:Чао Чжан, Дата: 2024-02-21 11:35:14
Тэги:

img

Обзор

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

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

  1. Расчет средней полосы, верхней полосы и нижней полосы полос Боллинджера
  2. Когда цена закрытия прорвется через верхнюю полосу, займите длинный
  3. Когда цена закрытия прорвется через нижнюю полосу, перейдите на короткий
  4. Правило выхода: закрыть длинную позицию, когда цена проходит через среднюю полосу, закрыть короткую позицию, когда цена проходит через среднюю полосу

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

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

  1. Использование индикатора Bollinger Bands для определения тенденции рынка и уровня поддержки/сопротивления
  2. Высокая вероятность прорыва полос Боллинджера
  3. Ясные правила въезда и выезда

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

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

Решения:

  1. Сочетание с другими показателями для подтверждения тенденции
  2. Настройка параметров для расширения диапазона полос Боллинджера

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

  1. Комбинировать с индикаторами тренда, чтобы избежать ненужной обратной торговли
  2. Динамически регулируйте параметры Bollinger Bands для оптимизации размера параметров

Резюме

Эта стратегия использует индикатор Bollinger Bands для определения ценового тренда и уровня поддержки / сопротивления. Она входит в точки прорыва Bollinger Bands и устанавливает стоп-лосс на среднем диапазоне. Логика стратегии проста и ясна, легко внедряется.


/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("FFFDBTC", overlay=true,initial_capital = 100,commission_type =strategy.commission.percent,commission_value= 0.15,default_qty_value = 100,default_qty_type = strategy.percent_of_equity)
// === INPUT BACKTEST RANGE ===
FromMonth = input.int(defval=1, title="From Month", minval=1, maxval=12)
FromDay = input.int(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input.int(defval=1972, title="From Year", minval=1972)
ToMonth = input.int(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input.int(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input.int(defval=9999, title="To Year", minval=2010)

// === FUNCTION EXAMPLE === 
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)  // backtest finish window
window() => true
// Definindo tamanho da posição
position_size = strategy.equity
// Definir parâmetros das Bandas de Bollinger
length = input.int(51, "Comprimento")
mult = input.float(1.1, "Multiplicador")

// Calcular as Bandas de Bollinger
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev
// Definir condições de entrada e saída
entrada_na_venda = low < lower
saida_da_venda = high > lower and strategy.position_size < 0
entrada_na_compra = high > upper
saida_da_compra = low < upper and strategy.position_size > 0
shortCondition = close[1] < lower[1] and close > lower and close < basis
longCondition = close[1] > upper[1] and close < upper and close > basis

// Entrar na posição longa se a condição longCondition for verdadeira
if ((entrada_na_compra) and window() )
    strategy.entry("Buy", strategy.long)
//saida da compra
if (saida_da_compra)
    strategy.close("Buy")
//entrada na venda
if ((entrada_na_venda) and window() )
    strategy.entry("Sell", strategy.short)
//saida da venda
if (saida_da_venda)
    strategy.close("Sell")
if ((longCondition) and window())
    strategy.entry("Long", strategy.long)

// Entrar na posição curta se a condição shortCondition for verdadeira
if ((shortCondition) and window())
    strategy.entry("Short", strategy.short)

// Definir a saída da posição

strategy.exit("Exit_Long", "Long", stop=ta.sma(close, length), when = close >= basis)
strategy.exit("Exit_Short", "Short", stop=ta.sma(close, length), when = close <= basis)

// Desenhar as Bandas de Bollinger no gráfico
plot(basis, "Média", color=#2962FF, linewidth=2)
plot(upper, "Upper", color=#BEBEBE, linewidth=2)
plot(lower, "Lower", color=#BEBEBE, linewidth=2)

Больше