
Chiến lược dao động RSI là một chiến lược giao dịch định lượng sử dụng chỉ số RSI cùng với tín hiệu vàng và vàng của đường trung bình để quyết định mua và bán. Chiến lược này sử dụng chỉ số RSI để xác định thị trường có bị đánh giá quá cao hay không, và kết hợp với xu hướng của đường trung bình để phát hành giao dịch khi chỉ số RSI hiển thị quá mua quá bán.
Chiến lược này chủ yếu dựa trên sự kết hợp của chỉ số RSI với đường trung bình. Đầu tiên, tính toán giá trị RSI trong một chu kỳ nhất định và thiết lập đường mua bán quá mức. Tiếp theo, tính toán đường trung bình nhanh và đường trung bình chậm.
Lợi thế lớn nhất của chiến lược này là đồng thời sử dụng chỉ số RSI để đánh giá hiện tượng quá mua quá bán, và định hướng xu hướng theo đường trung bình, có thể ngăn chặn hiệu quả phá vỡ giả. Ngoài ra, việc sử dụng kết hợp RSI và kênh BOLL cũng có thể lọc thêm tiếng ồn, làm cho tín hiệu giao dịch chính xác hơn.
Các rủi ro có thể tồn tại trong chiến lược này chủ yếu là: tần số hoạt động quá cao, dễ bị vứt bỏ; thiết lập tham số không đúng cách có thể dẫn đến giảm độ chính xác của tín hiệu. Ngoài ra, có thể có tổn thất trong trường hợp xung đột.
Bạn có thể xem xét điều chỉnh các tham số RSI hoặc tham số chu kỳ trung bình để phù hợp với các chu kỳ khác nhau; kết hợp với các chỉ số khác để lọc tín hiệu; thiết lập điểm dừng lỗ để kiểm soát rủi ro; tối ưu hóa quản lý vị trí cho mỗi giao dịch.
Chiến lược RSI là một chiến lược giao dịch ngắn hạn, ổn định và đáng tin cậy hơn. Bằng cách điều chỉnh tham số và kiểm soát rủi ro, bạn có thể có được tỷ lệ lợi nhuận tốt hơn. Chiến lược này dễ hiểu và thực hiện, rất phù hợp để học và áp dụng cho người mới bắt đầu giao dịch định lượng.
/*backtest
start: 2024-01-23 00:00:00
end: 2024-02-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("RSI slowma Ismael", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Definir la longitud del RSI
rsi_length = input(title='RSI Length', defval=14)
//media
Fast = input(title='Fast', defval=7)
slow = input(title='Slow', defval=2)
// Definir los niveles de sobrecompra y sobreventa del RSI
rsi_overbought = input(title='RSI Overbought Level', defval=72)
rsi_oversold = input(title='RSI Oversold Level', defval=29)
// Definir la longitud y la desviación estándar de las Bandas de Bollinger
bb_length = input(title="Bollinger Bands Length", defval=14)
bb_stddev = input(title="Bollinger Bands StdDev", defval=2)
// Calcular RSI
rsi_value = ta.rsi(close, rsi_length)
// Calcular Bandas de Bollinger
bb_upper = ta.sma(rsi_value, bb_length) + bb_stddev* ta.stdev(rsi_value, bb_length)
bb_lower = ta.sma(rsi_value, bb_length) - bb_stddev * ta.stdev(rsi_value, bb_length)
//media movil adelantada
fastMA = ta.sma(rsi_value, Fast)
slowMA = ta.sma(rsi_value, slow)
// Definir la señal de compra y venta
buy_signal = (ta.crossover(rsi_value, slowMA) and rsi_value < bb_lower and rsi_value < rsi_oversold) or (rsi_value < bb_lower and rsi_value < rsi_oversold)
sell_signal = (ta.crossunder(rsi_value, slowMA) and rsi_value > bb_upper and rsi_value > rsi_overbought) or (rsi_value > bb_upper and rsi_value > rsi_overbought)
// Configurar las condiciones de entrada y salida del mercado
if buy_signal
strategy.entry("Buy", strategy.long)
if sell_signal
strategy.close("Buy")
// Configurar el stop loss y el take profit
stop_loss = input.float(title='Stop Loss (%)', step=0.01, defval=3)
take_profit = input.float(title='Take Profit (%)', step=0.01, defval=8)
strategy.exit("Exit Long", "Buy", stop=close - close * stop_loss / 100, limit=close + close * take_profit / 100)
// Configurar la visualización del gráfico
plot(slowMA, title='RSISMA', color=color.rgb(75, 243, 33), linewidth=1)
plot(fastMA, title='RSIFMA', color=color.rgb(75, 243, 33), linewidth=1)
plot(rsi_value, title='RSI', color=color.purple, linewidth=1)
// Marcar las zonas de sobrecompra y sobreventa en el grafico del RSI
hl= hline(rsi_overbought, title='Overbought', color=color.purple, linestyle=hline.style_dotted, linewidth=1)
hll= hline(rsi_oversold, title='Oversold', color=color.purple, linestyle=hline.style_dotted, linewidth=1)
fill(hl,hll, color= color.new(color.purple, 91))
bbfill = plot(bb_upper, title='Bollinger Bands up', color=color.blue, linewidth=1)
bbfill1= plot(bb_lower, title='Bollinger Bands down', color=color.blue, linewidth=1)
fill(bbfill,bbfill1, color= color.new(#2bb5ec, 91))