RSI Chiến lược giao dịch chéo chu kỳ

Tác giả:ChaoZhang, Ngày: 2023-10-25 11:20:59
Tags:

img

Tổng quan

Chiến lược này sử dụng các nguyên tắc mua quá nhiều và bán quá nhiều của chỉ số RSI và kết hợp RSI đa chu kỳ để tạo ra các tín hiệu, thực hiện các hoạt động chéo chu kỳ. Chiến lược đánh giá các tín hiệu mua quá nhiều và bán quá nhiều theo các cài đặt chu kỳ của RSI, và sử dụng đường trung bình động của RSI để lọc để tránh các tín hiệu sai. Nó tạo ra tín hiệu mua khi RSI vượt qua đường trung bình động và tín hiệu bán khi vượt qua dưới, tạo thành một chế độ hoạt động chéo trung bình động điển hình.

Chiến lược logic

Chiến lược này chủ yếu tạo ra tín hiệu giao dịch thông qua các phán quyết mua quá nhiều và bán quá nhiều của chỉ số RSI. RSI viết tắt của Chỉ số sức mạnh tương đối, công thức của nó là: RSI = 100 - (100 / (1 + RS)), trong đó RS là tỷ lệ lợi nhuận đóng trung bình so với lỗ đóng trung bình trong một khoảng thời gian. Chỉ số RSI dao động từ 0 đến 100, thường được coi là bán quá nhiều dưới 30 và mua quá nhiều trên 70.

Chiến lược đặt một tham số cao sobrecompra và một tham số thấp sobreventa. Khi RSI cao hơn sobrecompra, nó được đánh giá là quá mua. Khi RSI thấp hơn sobreventa, nó được đánh giá là quá bán. Các giá trị mặc định của sobrecompra và sobreventa trong chiến lược lần lượt là 70 và 30.

Để tạo ra tín hiệu mua và bán, chiến lược sử dụng đường trung bình động của chỉ số RSI để lọc. Khi RSI vượt qua đường trung bình động của nó, tín hiệu mua Es_compra được tạo ra. Khi RSI vượt dưới đường trung bình động của nó, tín hiệu bán Es_venta được tạo ra. Các thông số trung bình động periodos_media mặc định là 14 giai đoạn.

Sau khi tạo ra tín hiệu mua và bán, chiến lược mở các vị trí cho giao dịch dài hoặc ngắn. Ngoài ra, chiến lược cũng đặt dừng lỗ và lấy lợi nhuận theo tỷ lệ phần trăm để ngăn ngừa tổn thất quá mức và khóa lợi nhuận.

Ưu điểm của Chiến lược

  1. Sử dụng chỉ số RSI để đánh giá các điều kiện mua quá mức và bán quá mức, tránh theo đuổi mức cao và bán mức thấp.

  2. Áp dụng đường trung bình động của chỉ số RSI để lọc để tránh tín hiệu sai.

  3. Kết hợp các thiết lập nhiều chu kỳ của chỉ số RSI để tạo ra các tín hiệu giao dịch ổn định hơn.

  4. Thiết lập các cơ chế dừng lỗ và lợi nhuận để kiểm soát rủi ro một cách hiệu quả.

  5. Chiến lược logic là đơn giản và rõ ràng, dễ hiểu và sửa đổi.

  6. Các thông số có thể tùy chỉnh, thích nghi với các sản phẩm và chu kỳ khác nhau.

Rủi ro của chiến lược

  1. Chỉ số RSI có hiệu ứng chậm trễ, có thể bỏ lỡ thời điểm tốt nhất để đảo ngược giá.

  2. Đường trung bình động gây ra sự chậm trễ tín hiệu giao dịch, không thể nắm bắt sự đảo ngược xu hướng kịp thời.

  3. Các thiết lập tham số mua quá mức và bán quá mức không đủ linh hoạt, cần điều chỉnh cho các chu kỳ và sản phẩm khác nhau.

  4. Các thiết lập dừng lỗ và lấy lợi nhuận không đúng có thể dẫn đến lỗ hoặc lỡ lợi nhuận.

  5. Các vị trí dài và ngắn chỉ là 1 lô, không thể sử dụng đầy đủ các quỹ cho giao dịch chênh lệch.

Hướng dẫn tối ưu hóa

  1. Kết hợp các chỉ số khác như MACD, KD để đánh giá tín hiệu giao dịch.

  2. Áp dụng đường trung bình động thích nghi để theo dõi xu hướng.

  3. Thiết lập các tham số mua quá mức và bán quá mức, điều chỉnh dựa trên biến động thị trường.

  4. Tối ưu hóa các thuật toán dừng lỗ và lấy lợi nhuận, chẳng hạn như dừng lỗ sau.

  5. Thêm cơ chế quản lý vị trí, điều chỉnh vị trí theo quy mô vốn.

  6. Thêm lọc xu hướng để tránh giao dịch thường xuyên trên các thị trường giới hạn phạm vi.

  7. Kiểm tra lại để tối ưu hóa các tham số và chọn kết hợp tham số tối ưu.

Tóm lại

Chiến lược này dựa trên các nguyên tắc mua quá nhiều và bán quá nhiều của chỉ số RSI, sử dụng đường trung bình động để lọc để tạo ra tín hiệu giao dịch, nhận ra giao dịch chéo chu kỳ điển hình. Chiến lược có cấu trúc logic rõ ràng và cài đặt tham số, thích nghi với các sản phẩm và chu kỳ khác nhau thông qua điều chỉnh tham số, làm cho nó trở thành một chiến lược giao dịch chéo chu kỳ đáng tin cậy và hiệu quả. Nhưng cũng có những hạn chế trong các công cụ như RSI và đường trung bình động, đòi hỏi phải tối ưu hóa thêm để làm cho các tham số chiến lược thích nghi hơn, lọc hiệu ứng tốt hơn và giảm rủi ro và tăng lợi nhuận ở mức tối đa.


/*backtest
start: 2023-09-01 00:00:00
end: 2023-09-30 23:59:59
period: 3m
basePeriod: 1m
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/
// © samuelkanneman

//@version=4
strategy("RSI KANNEMAN")
//////Entrada///////
i_startTime         = input(title="Start Date Filter", defval=timestamp("01 Nov 2020 13:30 +0000"), type=input.time, tooltip="Date & time to begin trading from")
i_endTime           = input(title="End Date Filter", defval=timestamp("1 Nov 2022 19:30 +0000"), type=input.time, tooltip="Date & time to stop trading")
sobrecompra= input(70, title="Sobre Compra", type=input.integer ,minval=50, maxval=100 )
sobreventa= input(30, title="Sobre Venta", type=input.integer ,minval=0, maxval=50 )
l1=hline(sobrecompra)
l2=hline(sobreventa, color=color.purple)
periodos= input(14, title="Periodos", type=input.integer ,minval=1, maxval=50 )
periodos_media= input(14, title="Logintud media movil", type=input.integer ,minval=1, maxval=200 )
var SL =0.0
var TP=0.0
StopLoss = input(2.0, title="SL %", step=0.2)
TakeProfit = input(5.0, title="TP %", step=0.2)

//////Proceso///////

mi_rsi=rsi(close,periodos)
mm_rsi=sma(mi_rsi,periodos_media)

Es_compra= crossover(mm_rsi,sobreventa)
Es_venta= crossunder(mm_rsi,sobrecompra)

comprado= strategy.position_size > 0
vendido = strategy.position_size < 0

//time to test 
dateFilter = true
//timePeriod = time >= timestamp(syminfo.timezone, 2020, 11, 1, 0, 0)


// long

if (not comprado and Es_compra and dateFilter  )
    // realizar long
    cantidad = strategy.equity/hlc3
    strategy.entry ("compra", strategy.long , cantidad)
    SL := close*(1-(StopLoss/100))
    TP := close*(1+(TakeProfit/100))
    
if close >= TP
    strategy.close ("compra" , comment="Salto TP")  

if (comprado and Es_venta  )
    strategy.close ("compra" , comment="Sobre Venta")

if close <= SL
    strategy.close ("compra" , comment="Salto SL")
    
// short

if (not vendido and Es_venta and dateFilter  )
    // realizar short
    cantidad = strategy.equity/hlc3
    strategy.entry ("venta", strategy.short , cantidad)
    SL := close*(1+(StopLoss/100))
    TP := close*(1-(TakeProfit/100))
    
if close <= TP
    strategy.close ("venta" , comment="Salto TP")  

if (vendido and Es_compra  )
    strategy.close ("venta" , comment="Sobre Compra")

if close >= SL
    strategy.close ("venta" , comment="Salto SL")

    

    
    
   ///////Salida//////
fill(l1,l2)
plot(mi_rsi)
plot(mm_rsi, color=color.yellow)

bgcolor(Es_compra ? color.blue : na , transp=0)
bgcolor(Es_venta ? color.red : na , transp=0)


// 1d 70 22 5 4 3 15    6 meses
//1h 70 20 6 4 5 7      1 mese
//15m 70 20 5 4 4 7      1 semana


Thêm nữa