Stratégie de rupture de consolidation

Auteur:ChaoZhang est là., Date: 2023-12-15 à 11h59
Les étiquettes:

img

Résumé

Cette stratégie est un indicateur de rupture de consolidation intradienne pour les marchés indiens. Elle intègre des conditions de temps, des commissions et un suivi stop-loss. Les avantages de cette stratégie comprennent une logique claire, un réglage flexible des paramètres et une adaptation à la dynamique du marché.

La logique de la stratégie

La stratégie de base est basée sur les bandes de Bollinger. Elle utilise une moyenne mobile simple à Période LONGUE car la ligne moyenne et les bandes haut/bas sont des écarts standards +MULT/-MULT. Les signaux d'achat sont générés lorsque les pauses sont proches au-dessus de la bande supérieure et les signaux de vente sont générés lorsque les pauses sont proches au-dessous de la bande inférieure, formant une stratégie de rupture de gamme.

Pour le contrôle des risques, il utilise l'ATR pour la ligne de stop-loss. Il prend également en compte les heures de négociation du marché indien et ferme toutes les positions à 14:57 tous les jours.

Analyse des avantages

Les avantages de cette stratégie:

  1. Logique claire, réglage facile des paramètres, adaptation flexible
  2. Incorporer le contrôle des arrêts de perte et du chronométrage pour la gestion des risques
  3. Considérez les spécificités des marchés indiens pour la localisation
  4. Fréquence raisonnable de négociation, éviter une sur- négociation
  5. Bonne extensibilité pour une optimisation ultérieure

Analyse des risques

Les risques de cette stratégie:

  1. Les bandes de Bollinger reposent sur un réglage des paramètres basé sur l' expérience
  2. Indicateur unique susceptible de faux signaux
  3. ATR stop loss ne peut contrôler que des risques limités
  4. Événements du cygne noir non pris en compte

Les risques peuvent être réduits par:

  1. Combinaison d'indicateurs multiples pour le filtrage du signal
  2. Optimisation des règles de réglage des paramètres
  3. Intégration d'une logique de négociation de la différence
  4. Amélioration de la robustesse du stop loss
  5. Combinaison d'indices du sentiment du marché

Directions d'optimisation

La stratégie peut être optimisée dans plusieurs directions:

  1. Optimisation du réglage des paramètres pour une meilleure adaptabilité
  2. Ajout d'autres indicateurs pour éviter les faux signaux
  3. Amélioration de la robustesse du stop loss
  4. Incorporer davantage d'analyse pour détecter les tendances
  5. Considérez le dimensionnement de la position automatique

Avec l'optimisation du modèle et de l'algorithme, les capacités de réglage des paramètres et de filtrage des signaux peuvent être améliorées pour une adaptation plus large et une tolérance au risque plus élevée.

Conclusion

En résumé, il s'agit d'une stratégie de rupture intraday simple. Elle répond aux spécificités du marché indien et contrôle les risques commerciaux. Avec d'autres améliorations du réglage des paramètres et du filtrage des signaux, cette stratégie peut répondre aux exigences de commercialisation.


/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Consolidation Breakout [Indian Market Timing]",overlay = true , pyramiding = 0 ,initial_capital = 50000, default_qty_value=5, currency = currency.NONE,commission_type = strategy.cash, commission_value = 30, slippage = 1 )


// ══════════════════════════════════//
// ————————> INPUT VALUES <————————— //
// ══════════════════════════════════//

LENGTH = input.int(title='LENGTH', defval = 75, minval = 10 ,maxval = 300)
MULT = input.float(title='MULT_STDEV',defval = 3.2 , minval = 1 , maxval = 7 , step =0.1)

//EMA1 = input.int(title='EMA1', defval = 50, minval = 10 ,maxval = 550)
//EMA2 = input.int(title='EMA2', defval = 135, minval = 10 ,maxval = 550)
factor_tr = input.float(title = "ATR TRAIL", defval = 10, step = 0.1)

// ══════════════════════════════════//
// ————————> DAY TIME LIMIT <——————— //
// ══════════════════════════════════//

t = time(timeframe.period, '0935-1430:1234567')
time_condition = not na(t)

//**********************// ════════════════════════════════//
//**********************// ————————> ATR & PLOT <————————— //
//**********************// ════════════════════════════════//
//ema1 = ta.ema(close,EMA1)
//ema2 = ta.ema(close,EMA2)

//plot(ema1, color=color.new(color.blue, 0), style=plot.style_linebr, title='ema1')
//plot(ema2, color=color.new(color.yellow, 0), style=plot.style_linebr, title='ema2')

atr_tr = ta.atr(16)*factor_tr

longStop = close - atr_tr
shortStop = close + atr_tr

Entry = close
length = LENGTH
mult = MULT
basis = ta.sma(Entry , length)
dev = mult * ta.stdev(Entry , length)
upper = (basis + dev)
lower = (basis - dev)
buyEntry = ta.crossover(Entry , upper)
sellEntry = ta.crossunder(Entry , lower)

//plot(upper, color=color.new(color.red, 0), style=plot.style_linebr, title="short stop")
//plot(lower, color=color.new(color.green, 0), style=plot.style_linebr, title="Long stop")

plot(upper, color=close[1] > upper and close > upper ? color.green : color.red, linewidth=2)
plot(lower, color=close[1] > lower and close > lower ? color.green : color.red, linewidth=2)




// ══════════════════════════════════//
// ————————> LONG POSITIONS <————————//
// ══════════════════════════════════//
//******barinstate.isconfirmed used to avoid repaint in real time*******

if ( buyEntry and strategy.opentrades==0 and barstate.isconfirmed and time_condition)
    strategy.entry(id= "Long" ,direction = strategy.long, comment = "B")
    
plot(longStop , color=color.new(color.blue, 0), style=plot.style_linebr, title='long Stop')

if strategy.position_size > 0 
    strategy.exit("long tsl", "Long" , stop = longStop , comment='S')

// ═════════════════════════════════════//
// ————————> SHORT POSITIONS <————————— //
// ═════════════════════════════════════//
if ( sellEntry and strategy.opentrades==0 and barstate.isconfirmed and time_condition)
    strategy.entry(id = "Short" ,direction = strategy.short,  comment = "S") 

if strategy.position_size < 0
    strategy.exit("short tsl", "Short" , stop = shortStop ,comment='B')

// ════════════════════════════════════════════════//
// ————————> CLOSE ALL POSITIONS BY 3PM <————————— //
// ════════════════════════════════════════════════//
strategy.close_all(when = hour == 14 and minute == 57)






    

Plus de