Chiến lược phá vỡ đảo ngược chỉ số RSI

Tác giả:ChaoZhang, Ngày: 2023-10-08 14:16:57
Tags:

Tổng quan

Chiến lược RSI Reversal Breakout là một chiến lược xác định các tình huống mua quá mức và bán quá mức bằng cách sử dụng chỉ số RSI và thực hiện các giao dịch chống xu hướng khi giá phá vỡ đường trung bình động. Chiến lược này kết hợp các chỉ số xu hướng và mua quá mức / bán quá mức để tham gia giao dịch khi các tín hiệu đảo ngược xuất hiện, nhằm mục đích nắm bắt các cơ hội đảo ngược ngắn hạn trong giá cổ phiếu.

Chiến lược logic

Chiến lược này chủ yếu dựa trên logic sau:

  1. Sử dụng chỉ số RSI để đánh giá giá liệu giá có quá mua hay quá bán. Chỉ số RSI dưới 25 được coi là quá bán; chỉ số RSI trên 80 được coi là quá mua.

  2. Sử dụng EMA 200 ngày để xác định hướng xu hướng tổng thể. Giá vượt qua EMA được coi là tín hiệu xu hướng tăng, và phá vỡ dưới EMA là tín hiệu xu hướng giảm.

  3. Khi chỉ số RSI cho thấy tín hiệu bán quá mức và giá phá vỡ trên EMA, hãy mua dài cho xu hướng tăng. Đây là một tín hiệu đảo ngược điển hình, cho thấy giá hồi phục từ vùng bán quá mức.

  4. Khi chỉ số RSI cho thấy tín hiệu mua quá mức và giá phá vỡ dưới đường EMA, hãy mua ngắn cho xu hướng giảm.

  5. Bằng cách giao dịch đảo ngược, chúng ta hy vọng bắt đầu một xu hướng mới trước khi nó bắt đầu.

Cụ thể, quy tắc nhập là mua dài khi chỉ số RSI < 25 và giá phá vỡ trên dải trên; mua ngắn khi chỉ số RSI > 80 và giá phá vỡ dải dưới. Ra khi giá cao nhất của ngày phá vỡ dưới giá cao nhất của ngày trước.

Ưu điểm

Chiến lược RSI Reversal Breakout có những ưu điểm sau:

  1. Nhận các cơ hội đảo ngược: Xác định mua quá mức / bán quá mức với RSI cho phép bắt được sự đảo ngược giá, đó là chìa khóa để tạo ra alpha.

  2. Giao dịch theo xu hướng: tích hợp EMA đảm bảo giao dịch phù hợp với xu hướng chính.

  3. Kiểm soát rủi ro: Các giao dịch đảo ngược giới hạn thời gian nắm giữ vị trí, kiểm soát rủi ro.

  4. Các tham số linh hoạt: Thời gian RSI và thời gian EMA có thể được điều chỉnh cho những thay đổi chế độ thị trường, cải thiện khả năng thích nghi.

  5. Tần suất giao dịch thích hợp: Các tín hiệu đảo ngược xảy ra ở tần số vừa phải, tránh giao dịch quá mức trong khi vẫn hoạt động.

  6. Sự đơn giản: Các quy tắc là đơn giản và dễ thực hiện trong giao dịch trực tiếp.

Rủi ro và quản lý

Chiến lược này cũng có những rủi ro sau:

  1. Nguy cơ đảo ngược thất bại: Giá có thể tiếp tục xu hướng ban đầu sau khi tín hiệu đảo ngược, dẫn đến tổn thất.

  2. Rủi ro xu hướng không rõ ràng: EMA không hoạt động tốt khi không có xu hướng rõ ràng. Có thể tránh đảo ngược khi xu hướng không rõ ràng.

  3. Rủi ro tối ưu hóa: Các thông số RSI và EMA có tác động lớn đến hiệu suất. Phải kiểm tra rộng rãi các giá trị khác nhau để tìm ra tối ưu.

  4. Nguy cơ quá phù hợp: Việc theo đuổi hiệu suất trong quá trình tối ưu hóa có thể dẫn đến quá phù hợp. Kiểm tra độ bền cần thiết để tránh quá tối ưu hóa.

  5. Rủi ro giao dịch quá mức: Các tín hiệu đảo ngược quá thường xuyên dẫn đến giao dịch quá mức. Có thể điều chỉnh thời gian RSI để hạn chế tần suất giao dịch.

Những cải tiến

Chiến lược có thể được cải thiện hơn nữa trong các khía cạnh sau:

  1. Đánh giá chất lượng cổ phiếu: Chỉ áp dụng chiến lược cho các cổ phiếu chất lượng cao dựa trên các nguyên tắc cơ bản.

  2. Kết hợp các chỉ số khác: Thêm MACD, KD vv để xác nhận tín hiệu đảo ngược và cải thiện độ tin cậy.

  3. Điều chỉnh tham số động: Điều chỉnh các tham số RSI và EMA theo động dựa trên các điều kiện thị trường thay đổi.

  4. Tối ưu hóa thời gian nhập cảnh: Điều chỉnh các quy tắc nhập cảnh để chờ xác nhận đảo ngược.

  5. Chiến lược thu lợi nhuận: Đặt mức thu lợi nhuận thích hợp để tránh trả lại lợi nhuận.

  6. Xem xét chi phí giao dịch: Đánh giá tác động của trượt và hoa hồng.

  7. Xem xét biến động: Chỉ tập trung vào các cổ phiếu biến động cao để làm cho chiến lược mạnh mẽ hơn.

Kết luận

Chiến lược RSI Reversal Breakout kết hợp các tín hiệu xu hướng và đảo ngược để bắt được những sự đảo ngược sớm và những cơ hội lớn. Tần suất giao dịch vừa phải giúp kiểm soát rủi ro. Tối ưu hóa đúng về thời gian nhập cảnh, lấy lợi nhuận và lựa chọn tham số có thể tăng hiệu suất hơn nữa. Với tối ưu hóa âm thanh, chiến lược này có thể là một cách tiếp cận giao dịch định lượng hiệu quả.


/*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)




Thêm nữa