Chiến lược phá vỡ RSI là một chiến lược sử dụng chỉ số RSI để xác định trường hợp mua bán quá mức và thực hiện hành động ngược khi giá phá vỡ đường trung bình. Chiến lược này kết hợp xu hướng và chỉ số mua bán quá mức và thực hiện hành động khi có tín hiệu đảo ngược giá cổ phiếu nhằm nắm bắt cơ hội đảo ngược ngắn hạn của giá cổ phiếu.
Chiến lược này dựa trên các nguyên tắc sau:
Sử dụng RSI ((2) để xác định xem giá cổ phiếu có đang quá mua hay quá bán không. RSI nhỏ hơn 25 được coi là quá bán; RSI lớn hơn 80 được coi là quá mua.
Sử dụng EMA 200 ngày để xác định xu hướng dài hạn của giá cổ phiếu. Giá vượt qua EMA được coi là tín hiệu lạc quan, giảm EMA được coi là tín hiệu giảm giá.
Khi RSI hiển thị tín hiệu oversold và giá vượt qua EMA, thực hiện giao dịch bullish, làm nhiều hơn. Đây là tín hiệu đảo ngược điển hình, cho thấy giá cổ phiếu thoát khỏi vùng oversold và bắt đầu tăng lên.
Khi RSI hiển thị tín hiệu mua quá mức và giá đã vượt qua EMA, thực hiện hoạt động giảm giá, làm空. Đây cũng là tín hiệu đảo ngược, cho thấy giá cổ phiếu thoát khỏi vùng mua quá mức và bắt đầu giảm xuống.
Với mô hình đảo ngược này, chúng tôi hy vọng có thể tham gia vào thị trường và nắm bắt cơ hội đảo ngược trước khi một xu hướng mới xuất hiện trên thị trường.
Cụ thể, điều kiện nhập cảnh của chiến lược là RSI nhỏ hơn 25 và giá phá vỡ đường lên; RSI lớn hơn 80 và giá phá vỡ đường xuống. Điều kiện trơn vị là mức giá trơn vị cao nhất trong một ngày giao dịch dưới mức giá cao nhất trong ngày.
Chiến lược phá vỡ đảo ngược RSI kết hợp xu hướng và yếu tố đảo ngược, có những lợi thế sau:
Lấy cơ hội đảo ngược: Bằng cách đánh giá RSI, bạn có thể nắm bắt thời điểm giá cổ phiếu đảo ngược, đây là chìa khóa để đạt được lợi nhuận vượt mức.
Điều này có nghĩa là: đồng thời kết hợp với EMA để xác định hướng của xu hướng lớn, tránh hoạt động ngược. Chỉ xem xét tín hiệu đảo ngược khi hướng của xu hướng lớn phù hợp.
Kiểm soát rủi ro: Sử dụng mô hình hoạt động ngược, thời gian giữ vị trí của mỗi hướng sẽ không quá dài, có thể kiểm soát rủi ro.
Tính linh hoạt: Các chu kỳ RSI và EMA có thể được điều chỉnh và tối ưu hóa theo tình hình thị trường, giúp chiến lược thích ứng hơn.
Tần số giao dịch vừa phải: Tần số của tín hiệu đảo ngược là vừa phải, không quá thường xuyên và không hoạt động trong thời gian dài.
Đơn giản và rõ ràng: các quy tắc chiến lược đơn giản và rõ ràng, không quá phức tạp.
Chiến lược này cũng có những rủi ro sau:
Rủi ro thất bại đảo ngược: Sau khi có tín hiệu đảo ngược, giá cổ phiếu có thể quay trở lại xu hướng ban đầu, thất bại đảo ngược, lúc này chiến lược sẽ chịu thua lỗ. Bạn có thể kiểm soát rủi ro bằng cách thực hiện dừng lỗ.
Rủi ro không rõ ràng về xu hướng: Khi giá cổ phiếu không có xu hướng rõ ràng, EMA không thể hướng dẫn hướng đi lớn và chiến lược sẽ tạo ra nhiều sự không chắc chắn hơn. Có thể tối ưu hóa bằng cách không hoạt động đảo ngược khi giá cổ phiếu không có xu hướng rõ ràng.
Rủi ro tối ưu hóa tham số: Việc lựa chọn tham số RSI và chu kỳ EMA có thể ảnh hưởng lớn đến hiệu quả của chiến lược. Cần kiểm tra lại tối ưu hóa dựa trên dữ liệu lịch sử và chọn tham số tốt nhất.
Rủi ro quá tối ưu hóa: Trong việc tìm kiếm sự kết hợp tham số tối ưu nhất, có thể tối ưu hóa quá mức và dẫn đến quá phù hợp. Phải thực hiện kiểm tra độ ổn định để tránh hoạt động tốt trong quá trình thử nghiệm nhưng thất bại trong thực tế.
Rủi ro tần suất giao dịch: Nếu tín hiệu đảo ngược xuất hiện quá thường xuyên, nó sẽ dẫn đến quá nhiều giao dịch. Các tham số chu kỳ RSI có thể được điều chỉnh thích hợp để kiểm soát tần suất giao dịch.
Chiến lược này cũng có thể được tối ưu hóa thêm bằng cách:
Đánh giá chất lượng cổ phiếu: Có thể kết hợp các chỉ số cơ bản của cổ phiếu, chỉ chọn cổ phiếu có chất lượng tốt để thực hiện chiến lược.
Kết hợp với các chỉ số khác: Các chỉ số khác như MACD, KD có thể được đưa vào để xác minh tín hiệu đảo ngược và tăng độ tin cậy chiến lược.
Tham số điều chỉnh động: RSI tham số và chu kỳ EMA có thể được điều chỉnh động theo thay đổi của môi trường thị trường để cải thiện khả năng thích ứng của chiến lược.
Tối ưu hóa thời gian nhập học: Tối ưu hóa thêm thời gian nhập học cụ thể, chẳng hạn như chờ xác nhận quay ngược và nhập học.
Chiến lược dừng lại: thiết lập mức dừng hợp lý để tránh lợi nhuận.
Xem xét chi phí giao dịch: đánh giá tác động của điểm trượt giao dịch và chi phí giao dịch khác đối với chiến lược.
Chỉ xem xét biến động của giá cổ phiếu: Chỉ các cổ phiếu có biến động lớn là mục tiêu chiến lược, làm cho chiến lược đáng tin cậy hơn.
Chiến lược phá vỡ đảo ngược RSI tích hợp xu hướng và tín hiệu đảo ngược, đi vào thị trường trước khi giá cổ phiếu đảo ngược để nắm bắt cơ hội lớn hơn. Chiến lược giao dịch có tần suất vừa phải, có thể kiểm soát rủi ro hiệu quả. Ngoài ra, cần chú ý đến rủi ro như thất bại đảo ngược, tối ưu hóa quá mức, tối ưu hóa thời gian vào thị trường và chiến lược dừng lại cũng có thể cải thiện hiệu quả chiến lược hơn nữa.
/*backtest
start: 2022-10-01 00:00:00
end: 2023-10-07 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jocker.soad
//@version=4
// strategy("My Script", overlay=true, initial_capital=10000, default_qty_value=100)
min = input(title="Valor minimo de entrada", defval=25)
qtdAtivos = input(title="Quantidade de ações", defval=1)
// overBuyLine = hline(80)
// overSellLine = hline(min)
var comprado = false
var valorComprado = 0.0
var qtdDiasComprado = 0
var valorLucro = 0.0
valueRsi = rsi(close, 2)
valueSma = sma(close, 200)
valueEma = ema(close, 200)
lastHighPrice = high[2]
buyValidation = valueRsi <= min
sellValidation = close >= lastHighPrice
// plot(lastHighPrice, trackprice=true, offset=-99999, color=color.olive, linewidth=3, style=plot.style_area)
// plot(valueRsi)
// plot(valueSma)
// plot(valueEma)
// plotshape(sellValidation, style=shape.triangledown, color=color.blue)
// plotshape(comprado, style=shape.triangledown, color=color.blue)
startDate = input(title="Inicio Dia", type=input.integer, defval=1, minval=1, maxval=31)
startMonth = input(title="Inicio Mes", type=input.integer, defval=1, minval=1, maxval=12)
startYear = input(title="Inicio Ano", type=input.integer, defval=2018, minval=1800, maxval=2100)
endDate = input(title="Final Dia", type=input.integer, defval=1, minval=1, maxval=31)
endMonth = input(title="Final Mes", type=input.integer, defval=12, minval=1, maxval=12)
endYear = input(title="Final Ano", type=input.integer, defval=2020, minval=1800, maxval=2100)
inDateRange = true
if inDateRange
if close >= valueEma
if comprado == false and buyValidation
qtdDiasComprado := 0
comprado := true
valorComprado := close
strategy.order("buy", true, qtdAtivos, when=buyValidation)
if sellValidation and comprado == true
comprado := false
valorLucro := valorLucro + (close - valorComprado)
valorComprado := 0
strategy.order("sell", false, qtdAtivos, when=sellValidation)
if comprado == true and sellValidation == false
qtdDiasComprado := qtdDiasComprado + 1
// plot(valorLucro, color=color.lime)