Chiến lược giao dịch định lượng RSI đột phá kép


Ngày tạo: 2024-01-18 15:25:11 sửa đổi lần cuối: 2024-01-18 15:25:11
sao chép: 0 Số nhấp chuột: 740
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch định lượng RSI đột phá kép

Tổng quan

Chiến lược phá vỡ RSI kép là một chiến lược giao dịch định lượng sử dụng cả RSI nhanh và RSI chậm để tạo ra tín hiệu giao dịch. Chiến lược này tạo ra tín hiệu giao dịch bằng cách phá vỡ giữa hai chỉ số RSI nhanh và chậm để theo dõi xu hướng thị trường.

Nguyên tắc chiến lược

Chiến lược này sử dụng hai chỉ số RSI cùng một lúc, một chỉ số RSI nhanh có chu kỳ 2 và một chỉ số RSI chậm có chu kỳ 14.

Khi RSI chậm lớn hơn 50, RSI nhanh nhỏ hơn 50, tạo ra tín hiệu giao dịch; khi RSI chậm nhỏ hơn 50, RSI nhanh lớn hơn 50, tạo ra tín hiệu giao dịch. Sau khi giao dịch, nếu có tín hiệu dừng lỗ ((đột K màu đỏ xuất hiện khi mất nhiều đơn vị, và cột K màu xanh lá cây khi mất đơn vị), thì dừng lỗ).

Phân tích lợi thế

  • Sử dụng các đặc điểm mua và bán quá mức của chỉ số RSI để tạo ra tín hiệu giao dịch, tránh theo đuổi giá cao và giá thấp;
  • RSI được sử dụng để theo dõi xu hướng thị trường và cho phép các entries và exits được thực hiện kịp thời.
  • Theo dõi xu hướng trung bình và dài hạn để tránh bị nhiễu bởi tiếng ồn thị trường ngắn hạn;
  • Các cơ quan quản lý rủi ro đã được thiết lập và có cơ chế ngăn chặn thiệt hại.

Rủi ro và giải pháp

  • Nguy cơ phá vỡ giả. Giải pháp là đặt các tham số RSI nhanh và chậm một cách hợp lý để đảm bảo phá vỡ thực sự.
  • Rủi ro của việc thiết lập điểm dừng không đúng cách. Giải pháp là thiết lập khoảng cách dừng một cách hợp lý dựa trên biến động của thị trường.
  • Rủi ro mất mát xoắn ốc. Giải pháp là không theo đuổi đà giảm, thực hiện các bước vào và lối ra theo các quy tắc chiến lược.

Hướng tối ưu hóa

Chiến lược này cũng có thể được tối ưu hóa theo các khía cạnh sau:

  1. Các tham số RSI có thể được tối ưu hóa để tìm ra sự kết hợp tốt nhất;
  2. Các chỉ số khác có thể được đưa vào để kết hợp để tạo ra tín hiệu giao dịch đáng tin cậy hơn;
  3. Có thể thiết lập dừng động, điều chỉnh điểm dừng theo thời gian thực theo biến động của thị trường.

Tóm tắt

Chiến lược phá vỡ RSI kép sử dụng chỉ số RSI chậm và nhanh để theo dõi xu hướng thị trường, tạo ra tín hiệu giao dịch trong khu vực mua quá mức, có thể tránh theo đuổi đà tăng và giảm. Đồng thời, thiết lập cơ chế dừng lỗ để kiểm soát rủi ro. Chiến lược này hoạt động đơn giản, dễ thực hiện, phù hợp với giao dịch định lượng.

Mã nguồn chiến lược
/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Double RSI Strategy 1.0", shorttitle = "2RSI str 1.0", overlay=true )

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
leverage = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage")
fast = input(2, defval = 2, minval = 2, maxval = 100, title = "Fast RSI Period")
slow = input(14, defval = 14, minval = 2, maxval = 100, title = "Slow RSI Period")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(close), 0), fast)
fastdown = rma(-min(change(close), 0), fast)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Slow RSI
slowup = rma(max(change(close), 0), slow)
slowdown = rma(-min(change(close), 0), slow)
slowrsi = slowdown == 0 ? 100 : slowup == 0 ? 0 : 100 - (100 / (1 + slowup / slowdown))

//Signals
up = slowrsi > 50 and fastrsi < 50
dn = slowrsi < 50 and fastrsi > 50
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)
lot = strategy.position_size == 0 ? strategy.equity / close * leverage : lot[1]

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot )

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot )
    
if exit
    strategy.close_all()