Stratégie de négociation de rupture des bandes de Bollinger

Auteur:ChaoZhang est là., Date: 2024-02-21 11h35 et 14h
Les étiquettes:

img

Résumé

Cette stratégie est conçue sur la base de l'indicateur Bollinger Bands. Elle va long lorsque le prix franchit la bande supérieure et court lorsque le prix franchit la bande inférieure. Elle appartient à la stratégie de suivi de tendance.

La logique de la stratégie

  1. Calculer la bande moyenne, la bande supérieure et la bande inférieure des bandes de Bollinger
  2. Lorsque le prix de clôture franchit la bande supérieure, allez long
  3. Lorsque le prix de clôture franchit la bande inférieure, allez court
  4. Règle de sortie: fermer une position longue lorsque le prix franchit la bande médiane, fermer une position courte lorsque le prix franchit la bande médiane

Cette stratégie utilise les bandes de Bollinger pour déterminer la plage de fluctuation et la direction de la tendance du marché. Lorsque le prix franchit les bandes supérieures ou inférieures des bandes de Bollinger, il est considéré comme un signal d'inversion de tendance pour l'entrée.

Analyse des avantages

  1. Utiliser l'indicateur Bollinger Bands pour déterminer la tendance du marché et les niveaux de soutien/résistance
  2. Probabilité élevée de rupture des bandes de Bollinger
  3. Des règles d'entrée et de sortie claires

Analyse des risques

  1. Risque de faux signaux de rupture des bandes de Bollinger, qui pourraient être des fluctuations de prix à court terme
  2. Plus grand stop loss lorsque les fluctuations de prix sont énormes

Les solutions:

  1. Combiner avec d'autres indicateurs pour confirmer la tendance
  2. Ajuster les paramètres pour élargir la plage des bandes de Bollinger

Directions d'optimisation

  1. Combiner avec les indicateurs de tendance pour éviter les opérations inversées inutiles
  2. Ajustez dynamiquement les paramètres des bandes de Bollinger pour optimiser la taille des paramètres

Résumé

Cette stratégie utilise l'indicateur des bandes de Bollinger pour déterminer la tendance des prix et les niveaux de support/résistance. Elle entre aux points de rupture des bandes de Bollinger et définit un stop loss à la bande du milieu.


/*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)

Plus de