Strategi ini adalah penunjuk penembusan penyatuan intraday perdagangan harian untuk pasaran India. Ia menggabungkan keadaan masa, komisen, dan pengasingan stop-loss. Kelebihan strategi ini termasuk logik yang jelas, penyesuaian parameter yang fleksibel, dan penyesuaian dengan dinamik pasaran. Walau bagaimanapun, risiko tertentu wujud dan memerlukan pengoptimuman lanjut.
Strategi teras adalah berdasarkan Bollinger Bands. Ia menggunakan purata bergerak sederhana tempoh LENGTH kerana garis tengah dan jalur ke atas / bawah adalah + MULT/- MULT penyimpangan standard. Isyarat beli dihasilkan apabila pemutusan dekat di atas jalur atas, dan isyarat jual dihasilkan apabila pemutusan dekat di bawah jalur bawah, membentuk strategi Penembusan Julat.
Untuk kawalan risiko, ia menggunakan ATR untuk garis stop loss. Ia juga mempertimbangkan jam dagangan pasaran India dan menutup semua kedudukan pada pukul 14:57 setiap hari.
Kelebihan strategi ini:
Risiko strategi ini:
Risiko boleh dikurangkan dengan:
Strategi ini boleh dioptimumkan dalam beberapa arah:
Dengan pengoptimuman model dan algoritma, keupayaan Penyesuaian Parameter dan Penapisan Isyarat dapat ditingkatkan untuk penyesuaian yang lebih luas dan toleransi risiko yang lebih tinggi.
Ringkasnya, ini adalah strategi breakout intraday yang mudah. Ia menangani spesifikasi pasaran India dan mengawal risiko perdagangan. Dengan penambahbaikan lanjut pada Tuning Parameter dan Penapisan Isyarat, strategi ini dapat memenuhi keperluan untuk komersialisasi.
/*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)