Stratégie de suivi de l'inversion du CCTBBO

Auteur:ChaoZhang est là., Date: 2023-11-23 13:42:03 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie est basée sur l'indicateur CCT Bollinger Band Oscillator (CCTBO) développé par Steve Karnish.

La logique de la stratégie

L'oscillateur fluctue entre -200 et 200, où 0 représente le prix moyen moins 2 écarts types et 100 est le prix moyen plus 2 écarts types. Les signaux de négociation sont générés lorsque l'oscillateur traverse ou tombe en dessous de sa ligne EMA. Plus précisément, lorsque l'oscillateur traverse au-dessus de sa ligne EMA et que la distance entre eux est supérieure à la valeur de marge définie, une position longue est ouverte. Lorsque l'oscillateur tombe en dessous de sa ligne EMA et que la distance est inférieure à la valeur définie négative, une position courte est ouverte. La taille de la marge de position est calculée en fonction du pourcentage défini.

Analyse des avantages

  • Utilise l'indicateur CCT Bollinger Band Oscillator pour réduire les faux signaux
  • La combinaison de la ligne EMA et des conditions de marge filtre les signaux pour éviter des transactions invalides excessives pendant les oscillations
  • Applique le mécanisme de stop loss pour arrêter les pertes en temps opportun lorsque les pertes sont trop importantes

Analyse des risques

  • L'oscillateur CCT lui-même présente un certain décalage, manquant ainsi le meilleur moment pour les renversements de prix
  • La valeur excessive de la marge et les paramètres de période EMA trop courts augmentent la fréquence et le risque des transactions
  • Le risque de perte est accru si le stop-loss de suivi est trop faible

Gestion des risques:

  • Ajustez la période de la ligne EMA, utilisez une période plus longue pour filtrer
  • Ajuster de manière appropriée la valeur de la marge pour équilibrer le risque et le rendement
  • Réduire le pourcentage de position pour contrôler les pertes uniques
  • Réduire raisonnablement la plage de perte d'arrêt de traction pour un arrêt plus rapide

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Remplacer par d'autres indicateurs de volatilité tels que les bandes de Bollinger, les canaux de Keltner, etc. pour déterminer les entrées et les sorties
  2. Ajouter d'autres indicateurs de filtrage comme MACD, RSI pour assurer la fiabilité du signal
  3. Utiliser des algorithmes d'apprentissage automatique pour optimiser automatiquement des paramètres tels que la période EMA, les valeurs de marge, etc.
  4. Ajouter des mécanismes de dimensionnement des positions comme la fraction fixe, Martingale pour contrôler le risque commercial
  5. Optimiser les mécanismes d'arrêt des pertes de suivi en utilisant des arrêts de volatilité ou ATR

Résumé

En résumé, il s'agit d'une stratégie de trading quantitative pour identifier les renversements de prix à l'aide de l'indicateur CCT Bollinger Band. Elle présente certains avantages mais aussi des possibilités d'amélioration.


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

Plus de