Diese Strategie ist ein Intraday-Trading-Konsolidierungsausbruchsindicator für die indischen Märkte. Sie beinhaltet Zeitbedingungen, Provisionen und Stop-Loss-Trailing. Zu den Vorteilen dieser Strategie gehören klare Logik, flexible Parameter-Tuning und Anpassung an die Marktdynamik. Es gibt jedoch bestimmte Risiken, die weiter optimiert werden müssen.
Die Kernstrategie basiert auf Bollinger Bands. Sie verwendet einen einfachen gleitenden Durchschnitt für die Längere Periode, da die Mittellinie und die Up/Low-Bänder +MULT/-MULT Standardabweichungen sind. Kaufsignale werden erzeugt, wenn die Breaks über dem oberen Band schließen, und Verkaufssignale werden erzeugt, wenn die Breaks unter dem unteren Band schließen, was eine Range Breakout-Strategie bildet.
Für die Risikokontrolle verwendet es ATR für die Stop-Loss-Linie. Es berücksichtigt auch die Handelszeiten des indischen Marktes und schließt alle Positionen jeden Tag um 14:57.
Die Vorteile dieser Strategie:
Die Risiken dieser Strategie:
Die Risiken können verringert werden, indem
Die Strategie kann in mehreren Richtungen optimiert werden:
Durch die Optimierung von Modellen und Algorithmen können die Parameter-Tuning- und Signalfilterfähigkeiten für eine breitere Anpassung und eine höhere Risikotoleranz verbessert werden.
Zusammenfassend ist dies eine einfache Intraday-Breakout-Strategie. Sie adressiert die Indiamarkt-Spezifiken und kontrolliert Handelsrisiken. Mit weiteren Verbesserungen bei Parameter Tuning und Signal Filtering kann diese Strategie die Anforderungen an die Kommerzialisierung erfüllen.
/*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)