Stratégie de suivi de l'inversion basée sur l'oscillateur de bande de volatilité


Date de création: 2023-11-23 13:42:03 Dernière modification: 2023-11-23 13:42:03
Copier: 0 Nombre de clics: 670
1
Suivre
1617
Abonnés

Stratégie de suivi de l’inversion basée sur l’oscillateur de bande de volatilité

Aperçu

Cette stratégie est basée sur l’indicateur CCT Bollinger Band Oscillator, développé par Steve Karnish, qui permet de réaliser un revers de transaction en identifiant des ruptures de cours et en associant un mécanisme de retrait.

Principe de stratégie

La stratégie utilise des prix élevés comme source de données, puis calcule la valeur de l’oscillateur de la bande d’ondulation CCT. La valeur de l’oscillateur oscille entre 200 et 200, 0 représentant le prix moyen moins 2 fois le décalage standard, et 100 représentant le prix moyen plus 2 fois le décalage standard. La stratégie génère un signal de transaction lorsque l’oscillateur traverse ou descend de sa moyenne EMA.

Analyse des avantages

  • L’utilisation d’indicateurs de vibration de bande CCT ayant une certaine influence sur le marché peut réduire les faux signaux
  • Combinaison des signaux de filtrage des conditions moyennes et marginales de l’EMA pour éviter une surabondance de transactions invalides pendant les secousses
  • Utilisation d’un mécanisme de stop-loss rétractable pour arrêter les pertes en temps opportun en cas de pertes excessives

Analyse des risques

  • L’oscillateur CCT produit lui-même un certain retard, ce qui lui fait manquer le meilleur moment pour inverser le cours.
  • Les marges trop élevées et les cycles EMA trop courts augmentent la fréquence des transactions et le risque
  • Le retrait d’un arrêt de perte trop souple augmente le risque de pertes

Les méthodes de contrôle des risques:

  • Adaptation de la moyenne des périodes de l’EMA à des filtres à périodes plus longues
  • Ajustement approprié des marges pour équilibrer les risques et les bénéfices
  • Réduire le ratio de position pour maîtriser les pertes individuelles
  • Réduire la portée des arrêts de rétractation et accélérer les arrêts de perte

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Remplacer d’autres indicateurs de volatilité, tels que les indices de la ceinture de Brin, le canal de Keltner, etc., pour déterminer les points d’achat et de vente
  2. Ajout d’autres indicateurs de filtrage, tels que MACD, RSI, etc., pour assurer la fiabilité du signal de négociation
  3. Optimisation automatique de paramètres tels que les cycles EMA, les valeurs marginales, etc. à l’aide d’algorithmes d’apprentissage automatique
  4. Augmentation des mécanismes de gestion des positions, tels que les positions à taux fixe, les martingales, etc., pour contrôler le risque de transaction
  5. Optimisation des mécanismes de stop-loss de rétractation, en utilisant des stop-loss sur volatilité ou des stop-loss ATR

Résumer

Cette stratégie est globalement une stratégie de trading quantitatif basée sur les indices de la bande de fluctuation CCT pour déterminer le renversement des prix. Elle présente certains avantages, mais il y a aussi de la place pour l’amélioration. La stabilité et la rentabilité de la stratégie peuvent être encore améliorées par l’optimisation des paramètres, l’ajout d’indicateurs de filtrage, l’utilisation de l’ingénierie des fonctionnalités et l’introduction de l’apprentissage automatique.

Code source de la stratégie
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-17 11:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// This strategy is based on the CCT Bollinger Band Oscillator (CCTBO) 
// developed by Steve Karnish of Cedar Creek Trading and coded by LazyBear.
// Indicator is available here https://www.tradingview.com/v/iA4XGCJW/

strategy("Strategy CCTBBO v2 | Fadior", shorttitle="Strategy CCTBBO v2", pyramiding=0, precision=2, calc_on_order_fills=false, initial_capital=1000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100, overlay=false)

length_stddev=input(title="Stddev loopback period",defval=20)
length_ema=input(title="EMA period", defval=2)
margin=input(title="Margin", defval=0, type=float, step=0.1)
price = input(title="Source", defval=high)
digits= input(title="Number of digits",defval=2,step=1,minval=2,maxval=6)
offset = input(title="Trailing offset (0.01 = 1%) :", defval=0.013, type=float, step=0.01)
pips= input(title="Offset in ticks ?",defval=false,type=bool)

src=request.security(syminfo.tickerid, "1440", price)

cctbbo=100 * ( src + 2*stdev( src, length_stddev) - sma( src, length_stddev ) ) / ( 4 * stdev( src, length_stddev ) )

ul=hline(150, color=gray, editable=true)
ll=hline(-50, color=gray)
hline(50, color=gray)
fill(ul,ll, color=green, transp=90)
plot(style=line, series=cctbbo, color=blue, linewidth=2)
plot(ema(cctbbo, length_ema), color=red)

d = digits == 2 ? 100 : digits == 3 ? 1000 : digits == 4 ? 10000 : digits == 5 ? 100000 : digits == 6 ? 1000000 : na

TS = 1
TO = pips ? offset : close*offset*d
CQ = 100
TSP = TS
TOP = (TO > 0) ? TO : na

longCondition = crossover(cctbbo, ema(cctbbo, length_ema)) and cctbbo - ema(cctbbo, length_ema) > margin
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Close Long", "Long", qty_percent=CQ, trail_points=TSP, trail_offset=TOP)


shortCondition = crossunder(cctbbo, ema(cctbbo, length_ema)) and cctbbo - ema(cctbbo, length_ema) < -margin
if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Close Short", "Short", qty_percent=CQ, trail_points=TSP, trail_offset=TOP)