Stratégie de trading adaptative de la grille de Bollinger

BB SMA GRID stdev
Date de création: 2025-02-21 11:52:10 Dernière modification: 2025-02-27 17:04:20
Copier: 3 Nombre de clics: 691
2
Suivre
319
Abonnés

Stratégie de trading adaptative de la grille de Bollinger Stratégie de trading adaptative de la grille de Bollinger

Aperçu

Il s’agit d’une stratégie de négociation de grille avancée basée sur les indicateurs de la ceinture de Brin. La stratégie détermine la position de la grille en fonction de la dynamique des rails supérieurs, inférieurs et intermédiaires de la ceinture de Brin et ajuste automatiquement l’espacement de la grille en fonction de la volatilité du marché. Le système exécute les transactions multi-espaces correspondantes lorsque le prix franchit la ligne de la grille, ce qui permet une négociation de grille entièrement automatisée.

Principe de stratégie

La stratégie utilise une moyenne mobile de 20 cycles comme moyen de la bande de fléchissement, et deux fois l’écart-type comme largeur de bande. Sur la base de la bande de fléchissement, la stratégie a mis en place 4 niveaux de grille avec un espacement de grille de 1% entre les hauts et les bas. Lorsque le prix franchit une ligne de grille vers le haut, le système exécute plusieurs opérations.

Avantages stratégiques

  1. Adaptation dynamique - la position de la grille se déplace avec les bandes de Brin, permettant aux stratégies de s’adapter à différents environnements de marché
  2. Risque maîtrisé - Limiter la zone de négociation par la ceinture de Brin pour éviter une position excessive dans des conditions extrêmes
  3. Automatisation élevée - le système exécute automatiquement les transactions sans intervention humaine
  4. Le trading bidirectionnel: profiter des hauts et des bas
  5. Paramètres réglables - l’espacement de la grille et le nombre de niveaux peuvent être ajustés selon les besoins

Risque stratégique

  1. Risque de marché tendanciel - un retrait plus important est possible dans une tendance unilatérale
  2. Risques de gestion de fonds - le déclenchement simultané de plusieurs grilles peut entraîner une surtension
  3. Risque de glissement - une forte volatilité du marché peut entraîner une déviation du prix de transaction par rapport au prix de la grille
  4. Risques techniques - La bande de Brin pourrait provoquer de faux signaux de détection

Solution:

  • Définition de la limite de détention
  • Les filtres de tendance sont introduits
  • Optimiser le mécanisme d’exécution des commandes
  • Ajout d’un filtre pour les signaux de confirmation

Orientation de l’optimisation de la stratégie

  1. Adaptation de l’espacement de la grille - ajustement dynamique de l’espacement de la grille en fonction du taux d’oscillation
  2. L’introduction de la relation quantité-prix - le moment d’optimiser l’entrée en bourse en combinant les indicateurs quantitatifs
  3. Optimiser les mécanismes de prévention des pertes - concevoir des solutions de prévention plus flexibles
  4. Optimisation de la gestion des fonds - Gestion des positions basée sur le risque
  5. Synchronisation à cycles multiples - mise en place d’un mécanisme de confirmation de signaux à cycles multiples

Résumer

La stratégie a pour avantage central de pouvoir s’adapter à différents environnements de marché tout en contrôlant les risques par des ajustements de paramètres. Bien que certains risques soient inhérents, il est possible de construire un système de trading plus robuste en continuant à optimiser et à améliorer.

Code source de la stratégie
/*backtest
start: 2024-12-19 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Grid Bot based on Bollinger Bands with Adjustable Levels", overlay=true)

// Settings
source = close
length = input.int(20, minval=1, title="Bollinger Bands Length")
mult = input.float(2.0, minval=0.001, maxval=50, title="Bollinger Bands Multiplier")
gridDistancePercent = input.float(1.0, title="Distance Between Levels (%)") / 100 // Distance between grid levels in percentage
gridSize = input.int(4, title="Number of Grid Levels") // Number of grid levels

// Bollinger Bands Calculation
basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev

// Middle line between the upper and lower Bollinger Bands
middle = (upper + lower) / 2

// Levels for long and short positions
var float[] longLevels = array.new_float(gridSize)
var float[] shortLevels = array.new_float(gridSize)

// Filling levels for long and short positions
for i = 0 to gridSize - 1
    array.set(longLevels, i, lower * (1 + gridDistancePercent * (i + 1))) // For longs, increase the lower band
    array.set(shortLevels, i, upper * (1 - gridDistancePercent * (i + 1))) // For shorts, decrease the upper band

// Logic for entering a long position (buy) at the first level crossover
longCondition = ta.crossover(source, array.get(longLevels, 0)) // Condition for buying — crossover with the first long level
if longCondition
    strategy.entry("GridLong", strategy.long, comment="GridLong")

// Logic for entering a short position (sell) at the first level crossunder
shortCondition = ta.crossunder(source, array.get(shortLevels, 0)) // Condition for selling — crossunder with the first short level
if shortCondition
    strategy.entry("GridShort", strategy.short, comment="GridShort")

// Logic for additional buys/sells when reaching subsequent levels
// For longs:
for i = 1 to gridSize - 1
    if ta.crossover(source, array.get(longLevels, i))
        strategy.entry("GridLong" + str.tostring(i), strategy.long, comment="GridLong")

// For shorts:
for i = 1 to gridSize - 1
    if ta.crossunder(source, array.get(shortLevels, i))
        strategy.entry("GridShort" + str.tostring(i), strategy.short, comment="GridShort")

// Visualization of the levels
plot(upper, color=color.red, linewidth=2, title="Upper Bollinger Band")
plot(lower, color=color.green, linewidth=2, title="Lower Bollinger Band")
plot(middle, color=color.blue, linewidth=2, title="Middle Line")

// Display additional grid levels (fixed titles)
plot(array.get(longLevels, 0), color=color.green, linewidth=1, title="Long Level 1") // For the 1st long level
plot(array.get(longLevels, 1), color=color.green, linewidth=1, title="Long Level 2") // For the 2nd long level
plot(array.get(longLevels, 2), color=color.green, linewidth=1, title="Long Level 3") // For the 3rd long level
plot(array.get(longLevels, 3), color=color.green, linewidth=1, title="Long Level 4") // For the 4th long level

plot(array.get(shortLevels, 0), color=color.red, linewidth=1, title="Short Level 1") // For the 1st short level
plot(array.get(shortLevels, 1), color=color.red, linewidth=1, title="Short Level 2") // For the 2nd short level
plot(array.get(shortLevels, 2), color=color.red, linewidth=1, title="Short Level 3") // For the 3rd short level
plot(array.get(shortLevels, 3), color=color.red, linewidth=1, title="Short Level 4") // For the 4th short level