Chỉ số RSI kép kết hợp với Bollinger Band để theo dõi xu hướng

Tác giả:ChaoZhang, Ngày: 2023-09-19 22:10:02
Tags:

Tổng quan

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.

Phân tích nguyên tắc

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.

Phân tích lợi thế

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.

Phân tích rủi ro

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.

Các đề xuất tối ưu hóa

  1. Thêm các chiến lược dừng lỗ để thoát nhanh chóng khi đảo ngược.

  2. Kết hợp các bộ lọc khác như âm lượng để tránh các sự đột phá sai.

  3. Tối ưu hóa các thông số để tìm kết hợp tốt nhất.

  4. Thêm các mô hình học máy để xác định tốt hơn các chế độ thị trường.

  5. Cải thiện quản lý rủi ro bao gồm kích thước vị trí, kiểm soát lỗ.

Kết luận

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')


Thêm nữa