Chiến lược này là một chỉ số đột phá hợp nhất giao dịch trong ngày cho thị trường Ấn Độ. Nó kết hợp điều kiện thời gian, hoa hồng và theo dõi dừng lỗ. Những lợi thế của chiến lược này bao gồm logic rõ ràng, điều chỉnh tham số linh hoạt và thích nghi với động lực thị trường. Tuy nhiên, một số rủi ro tồn tại và cần tối ưu hóa hơn nữa.
Chiến lược cốt lõi dựa trên Bollinger Bands. Nó sử dụng trung bình di chuyển đơn giản thời gian LONG vì đường giữa và các dải lên / xuống là + MULT / MULT sai lệch tiêu chuẩn. Các tín hiệu mua được tạo ra khi phá vỡ gần bên trên dải trên, và các tín hiệu bán được tạo ra khi phá vỡ gần bên dưới dải dưới, tạo thành chiến lược Breakout Range.
Để kiểm soát rủi ro, nó sử dụng ATR cho đường dừng lỗ. Nó cũng xem xét giờ giao dịch thị trường Ấn Độ và đóng tất cả các vị trí lúc 14:57 mỗi ngày.
Những lợi thế của chiến lược này:
Những rủi ro của chiến lược này:
Các rủi ro có thể được giảm bằng cách:
Chiến lược có thể được tối ưu hóa theo nhiều hướng:
Với tối ưu hóa mô hình và thuật toán, khả năng điều chỉnh tham số và lọc tín hiệu có thể được cải thiện để thích nghi rộng hơn và dung nạp rủi ro cao hơn.
Tóm lại, đây là một chiến lược đột phá trong ngày đơn giản. Nó giải quyết các đặc điểm cụ thể của thị trường Ấn Độ và kiểm soát rủi ro giao dịch. Với những cải tiến hơn nữa về điều chỉnh tham số và lọc tín hiệu, chiến lược này có thể đáp ứng yêu cầu thương mại hóa.
/*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)