Chiến lược này sử dụng các chỉ số RSI kép để xác định các điều kiện mua quá mức và bán quá mức, kết hợp với các đột phá Bollinger Band để tạo ra các tín hiệu giao dịch. Nó thuộc về danh mục chiến lược theo xu hướng. Mục tiêu là cải thiện độ tin cậy tín hiệu bằng cách kết hợp nhiều chỉ số và kiếm lợi từ các xu hướng rõ ràng.
Chiến lược này sử dụng hai chỉ số RSI với khung thời gian khác nhau để đánh giá tình trạng mua/bán quá mức ngắn hạn và dài hạn.
Bollinger Bands cũng được sử dụng để xác định sự đột phá giá. Chỉ khi các điều kiện RSI được đáp ứng và giá phá vỡ Boll Band trên / dưới sẽ tạo ra một tín hiệu giao dịch. Việc xác nhận đột phá giúp tránh các tín hiệu trong các thị trường không có xu hướng.
Cuối cùng, các MA nhanh và chậm được kiểm tra hướng xu hướng. Các giao dịch chỉ được mở khi đột phá phù hợp với hướng tín hiệu RSI.
Việc sử dụng kết hợp nhiều chỉ số giúp lọc ra các tín hiệu sai, chỉ giao dịch xu hướng rõ ràng.
Rủi ro chính là không thể xác định kịp thời sự đảo ngược xu hướng. Sự đảo ngược hình V có thể dẫn đến tổn thất đáng kể mà không có dừng lỗ kịp thời.
Thêm các chiến lược dừng lỗ để thoát nhanh chóng khi đảo ngược.
Kết hợp các bộ lọc khác như âm lượng để tránh các sự đột phá sai.
Tối ưu hóa các thông số để tìm kết hợp tốt nhất.
Thêm các mô hình học máy để xác định tốt hơn các chế độ thị trường.
Cải thiện quản lý rủi ro bao gồm kích thước vị trí, kiểm soát lỗ.
Chiến lược này kết hợp hai chỉ số RSI và Bollinger Bands để kiếm lợi từ xu hướng ngắn hạn. Mặc dù đơn giản và thẳng thắn, nhưng có những hạn chế như tín hiệu đảo ngược chậm.
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-12 04:00:00 period: 2m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Madrugada strat copy", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, currency = currency.USD) // === GENERAL INPUTS === // RSI 1 RSIlength = input(10,title="RSI") RSIoverSold = input(65,title="OSold") RSIoverBought = input(35,title="OBought") price = close vrsi = rsi(price, RSIlength) // RSI 2 RSIlength2 = input(6,title="RSI2") RSIoverSold2 = input(65,title="OSold2") RSIoverBought2 = input(35,title="OBought2") price2 = close vrsi2 = rsi(price2, RSIlength2) //Bollinger Bands source = close Bollinger = input(20, minval=1), Desv = input(1.7, minval=0.001, maxval=50) basis = sma(source, Bollinger) dev = Desv * stdev(source, Bollinger) upper = basis + dev lower = basis - dev plot(basis, color=red, title="BB ma") p1 = plot(upper, color=blue, title="BBajo") p2 = plot(lower, color=blue, title="BAlto") fill(p1, p2) //Media movil short = input(3, minval=1, title="Media corta") long = input(10, minval=1, title="Media larga") src = close plot(sma(src, short), color=#00FF00, transp=0, linewidth=1, title="Media rapida") plot(sma(src, long), color=white, transp=0, linewidth=2, title="Media lenta") // === STRATEGY - LONG POSITION EXECUTION === enterLong() => vrsi < 30 and vrsi2 < 27 and cross(lower, price) exitLong() => short < long strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in // === STRATEGY - SHORT POSITION EXECUTION === enterShort() => vrsi > 70 and vrsi2 > 70 and cross(upper, price) strategy.entry(id = "Short", long = false, when = enterShort()) // Definición señales de compra buy_signals = vrsi < 30 and vrsi2 < 27 and cross(lower, price) // Definición señales de venta sell_signals = vrsi > 70 and vrsi2 > 70 and cross(upper, price) // Dibuja las señales de compra venta en franjas de color b_color = (sell_signals) ? color(red,65) : (buy_signals) ? color(green,65) : na bgcolor(b_color) // Dibuja las señales de compra venta coloreando las velas barcolor(buy_signals ? white : sell_signals ? white : na) plot(vrsi, color=white, linewidth=1) plot(vrsi, color=white, linewidth=2) // Crea alarmas usables desde el desplegable para poder enviar mails a haas alertcondition(buy_signals, title='Buy-Signal', message='compra') alertcondition(sell_signals, title='Sell-Signal', message='vende')