Stratégie de trading de rupture de consolidation du marché indien


Date de création: 2023-12-15 11:59:08 Dernière modification: 2023-12-15 11:59:08
Copier: 1 Nombre de clics: 610
1
Suivre
1621
Abonnés

Stratégie de trading de rupture de consolidation du marché indien

Aperçu

Cette stratégie est une stratégie d’indication de rupture intégrée pour les transactions intraday de la bourse indienne. Elle combine des conditions de temps, des commissions et un suivi des pertes. L’avantage de cette stratégie est la clarté de la logique, la flexibilité d’ajustement des paramètres et la capacité à s’adapter aux changements du marché.

Principe de stratégie

La logique centrale de la stratégie est basée sur l’indicateur de la ceinture de Brin. Elle utilise une moyenne mobile simple de longueur pour LENGTH comme axe central, et les rails supérieurs et inférieurs sont respectivement calculés en multiples de MULT.

Pour maîtriser le risque, il a combiné le stop loss avec l’indicateur ATR. En tenant compte du temps de négociation des actions indiennes, toutes les positions ont été liquidées à 14h57.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. La logique est claire, les paramètres sont faciles à ajuster et peuvent être adaptés aux conditions du marché
  2. Logique intégrée de contrôle de stop-loss et de temps pour contrôler efficacement les risques
  3. La compatibilité tient compte des mécanismes de négociation spéciaux des marchés boursiers indiens et s’adapte au contexte local.
  4. Évitez les transactions excessives
  5. Scalable et utilisable pour optimiser les algorithmes

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Les paramètres de la bande de Brin sont dépendants de l’expérience et ne conviennent pas à tous les environnements.
  2. Un seul indicateur peut générer de faux signaux
  3. La résiliation de l’ATR ne peut contrôler efficacement qu’une partie des risques
  4. L’impact de l’incident majeur du Black Swan n’a pas été pris en compte

Le risque peut être réduit par:

  1. Combinaison de plusieurs indicateurs pour filtrer le signal
  2. Règles d’optimisation des paramètres
  3. Combiné avec le jugement de l’ouverture du saut en vol
  4. Augmentation de la robustesse des algorithmes de stop-loss
  5. En lien avec l’indicateur de sentiment du marché

Direction d’optimisation

Cette stratégie peut être optimisée dans les directions suivantes:

  1. Optimiser les règles de paramétrage pour les rendre plus adaptables
  2. Ajout de plusieurs indicateurs de jugement pour éviter les faux signaux
  3. Optimiser et renforcer la robustesse des algorithmes de stop loss
  4. L’analyse des tendances combinée à d’autres méthodes
  5. Considérer un ajustement automatique de la taille de la position

Grâce à l’optimisation des algorithmes et des modèles, les capacités de paramétrage et de filtrage des signaux de la stratégie peuvent être améliorées pour s’adapter à un environnement de marché plus large et supporter un risque plus élevé.

Résumer

La stratégie est globalement une stratégie de trading de rupture intra-journée claire et facile à comprendre. Elle prend en compte les caractéristiques du marché indien et maîtrise les risques de trading.

Code source de la stratégie
/*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)