Chiến lược theo dõi chênh lệch giá kênh RSI

Tác giả:ChaoZhang, Ngày: 2023-12-18 17:48:24
Tags:

img

Tổng quan

Chiến lược RSI Channel Price Difference Tracking tạo ra các tín hiệu giao dịch bằng cách theo dõi biến động của các chỉ số RSI trong các kênh ngưỡng kết hợp với sự đột phá giá.

Chiến lược logic

  1. Sử dụng trung bình động Hull để làm mịn RSI và tạo các chỉ số RSI mịn, bao gồm RSI cho giá đóng, giá cao nhất, giá thấp nhất và giá trung bình.

  2. Đặt phạm vi kênh RSI lên 55-45. Khi RSI bước vào kênh 55-45, nó cho thấy bước vào vùng sốc.

  3. Khi giá đóng RSI giảm trở lại so với giới hạn trên của kênh, và giá đóng thấp hơn giá trung bình, nó cho thấy giá đang chịu áp lực; tuy nhiên, tại thời điểm này, giá trung bình RSI vẫn nằm trên giới hạn trên của kênh, cho thấy giá trung bình vẫn có sức mua đáp ứng logic theo dõi sự đột phá giá trung bình. Do đó, một tín hiệu mua được tạo ra.

  4. Khi giá đóng RSI bật trở lại từ giới hạn dưới của kênh, và giá đóng cao hơn giá trung bình. Nó chỉ ra rằng giá có hỗ trợ; nhưng tại thời điểm này, giá trung bình RSI giảm xuống dưới giới hạn dưới của kênh, cho thấy giá trung bình có áp lực lớn hơn, đáp ứng logic theo dõi sự đột phá giá trung bình. Do đó, một tín hiệu bán được tạo ra.

  5. Chỉ số RSI giá cao nhất và chỉ số RSI giá thấp nhất được sử dụng để nhanh chóng xác định các tín hiệu giao dịch không hợp lệ và thực hiện các lỗ dừng nhanh.

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

  1. Sử dụng giá trung bình để theo dõi hướng mạnh của giá trung bình đáp ứng ý tưởng theo dõi xu hướng.

  2. Khi chỉ số RSI dao động trong kênh ngưỡng, nó cho thấy bước vào vùng sốc.

  3. Chỉ số RSI giá cao nhất và chỉ số RSI giá thấp nhất được sử dụng để nhanh chóng xác định các tín hiệu giao dịch không hợp lệ và thực hiện các lỗ dừng nhanh, có thể kiểm soát thua lỗ một cách hiệu quả.

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

  1. Cài đặt tham số RSI không chính xác có thể gây ra phản ứng quá nhạy cảm hoặc chậm.

  2. Tầm quan trọng của sự đột phá giá trung bình không phải lúc nào cũng đáng tin cậy và giá trung bình cũng có thể biến động.

  3. Sự biến động cao trên thị trường tiền điện tử, cài đặt dừng lỗ quá lỏng lẻo có thể dẫn đến tổn thất phóng đại.

Giải pháp:

  • Tối ưu hóa các thông số RSI để đáp ứng đúng với các thay đổi giá
  • Kết hợp nhiều chỉ số hơn để đánh giá độ tin cậy của giá trung bình
  • Tắt các thiết lập dừng lỗ một cách thích hợp để ngăn ngừa tổn thất lớn

Hướng dẫn tối ưu hóa chiến lược

  1. Kết hợp nhiều chỉ số hơn để đánh giá hướng đột phá của giá trung bình

Đưa ra các chỉ số như Bollinger Bands để đánh giá xem giá trung bình có gần với các dải trên hoặc dưới không, do đó cải thiện độ chính xác của việc đánh giá hướng đột phá của giá trung bình.

  1. Đưa ra các mô hình học máy để hỗ trợ phán đoán

Sử dụng LSTM và các mô hình học sâu khác để dự đoán xu hướng tương lai của giá trung bình và giúp xác định xem giá trung bình có thể phá vỡ thành công theo một hướng nhất định hay không.

  1. Sử dụng lỗ dừng thích nghi

Điều chỉnh động các vị trí dừng lỗ dựa trên biến động thị trường. Ví dụ, thắt chặt các vị trí dừng lỗ một cách thích hợp khi biến động tăng; nới lỏng các vị trí dừng lỗ một cách thích hợp khi biến động giảm.

Tóm lại

Chiến lược theo dõi chênh lệch giá kênh RSI tạo ra tín hiệu giao dịch bằng cách theo dõi biến động RSI trong các kênh kết hợp với đột phá giá, nhằm mục đích nắm bắt các vụ nổ mua / bán nhanh trên thị trường tiền điện tử. Chiến lược kết hợp hiệu quả các phương pháp theo dõi xu hướng và xác định phạm vi và vẫn có thể nhận được tín hiệu giao dịch tốt khi chênh lệch giá thu hẹp. Trong khi đó, cơ chế dừng lỗ nhanh cũng làm cho rủi ro của chiến lược có thể kiểm soát được. Bước tiếp theo là cải thiện thêm độ tin cậy và lợi nhuận của chiến lược bằng cách kết hợp nhiều phán đoán chỉ số và dự đoán học máy hơn.


/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Hull MA of RSI Strategy",overlay=false)
//+++++++++++++++++++++++++++++++
//++++++++++++ Setup ++++++++++++
//+++++++++++++++++++++++++++++++
// RSI 
rsi1_tt="=== RSI ==="
rsi1_len=input(13,title="Period",inline="set",group=rsi1_tt)
//Mid
mid_tt="=== Mid Channel ==="
upper=input(55.0,title="Upper",inline="set",group=mid_tt)
lower=input(45.0,title="Lower",inline="set",group=mid_tt)
//Over
over_tt="=== Over ==="
ovb=input(70.0,title="Overbought",inline="set",group=over_tt)
ovs=input(30.0,title="Oversold",inline="set",group=over_tt)
//++++++++++++++++++++++++++++++++++++++++
//++++++++++++ Hull MA of RSI ++++++++++++
//++++++++++++++++++++++++++++++++++++++++
hma_tt="=== Hull MA ==="
hma_len=input(3,title="Period",inline="set",group=hma_tt)
rsi_c=hma(rsi(close,rsi1_len),hma_len)
rsi_h=hma(rsi(high,rsi1_len),hma_len)
rsi_l=hma(rsi(low,rsi1_len),hma_len)
rsi_hl2=hma(rsi(hl2,rsi1_len),hma_len)
//++++++++++++++++++++++++++++++++
//++++++++++++ Signal ++++++++++++
//++++++++++++++++++++++++++++++++
var order_status="None"
BuySignal=
       crossunder(rsi_c,ovb)
       and
       close<hl2
       and
       rsi_hl2>ovb
       and
       order_status=="None"
CloseBuy=
       order_status[1]=="Long"
       and
       (crossover(rsi_c,ovb)
       or
       crossunder(rsi_l,upper))
SellSignal=
       crossover(rsi_c,ovs)
       and
       close>hl2
       and
       rsi_hl2<ovs
       and
       order_status=="None"
CloseSell=
       order_status[1]=="Short"
       and
       (crossunder(rsi_c,ovs)
       or
       crossover(rsi_h,lower))
ExitSignal=
       CloseBuy
       or
       CloseSell
if BuySignal
    order_status:="Long"
if SellSignal
    order_status:="Short"
if ExitSignal
    order_status:="None"

//+++++++++++++++++++++++++++++++++++
//++++++++++++ Plot Line ++++++++++++
//+++++++++++++++++++++++++++++++++++
rsi_c_col=
       rsi_c>upper?color.new(color.blue,0):
       rsi_c<lower?color.new(color.blue,0):
       color.new(color.orange,0)
rsi_h_col=
       rsi_h>upper?color.new(color.green,0):
       rsi_h<lower?color.new(color.green,0):
       color.new(color.orange,0)
rsi_l_col=
       rsi_l>upper?color.new(color.yellow,0):
       rsi_l<lower?color.new(color.yellow,0):
       color.new(color.orange,0)
rsi_hl2_col=
       rsi_hl2>upper?color.new(color.olive,0):
       rsi_hl2<lower?color.new(color.olive,0):
       color.new(color.orange,0)
plot(rsi_c,title="RSI Close",color=rsi_c_col,linewidth=2)
plot(rsi_h,title="RSI High",color=rsi_h_col,linewidth=1)
plot(rsi_l,title="RSI Low",color=rsi_l_col,linewidth=1)
plot(rsi_hl2,title="RSI HL2",color=rsi_hl2_col,linewidth=1)
upper_line=hline(upper,title="Upper",color=color.new(color.black,100))
lower_line=hline(lower,title="Lower",color=color.new(color.black,100))
fill(upper_line,lower_line,title="Mid Channel",color=color.silver)
ovb_line=hline(ovb,title="Overbought",color=color.new(color.silver,0),linestyle=hline.style_solid,linewidth=2)
ovs_line=hline(ovs,title="Oversold",color=color.new(color.silver,0),linestyle=hline.style_solid,linewidth=2)

//++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++ Plot Analyzing Signals ++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++
//Color
buy_col=
       BuySignal?color.new(color.blue,70):na
sell_col=
       SellSignal?color.new(color.red,70):na
close_buy_col=
       CloseBuy and order_status[1]=="Long"?color.new(color.yellow,70):na
close_sell_col=
       CloseSell and order_status[1]=="Short"?color.new(color.yellow,70):na
//Background
bgcolor(close_buy_col, title='Close Buy', offset=0)
bgcolor(close_sell_col, title='Close Sell', offset=0)
bgcolor(sell_col, title='Sell', offset=0)
bgcolor(buy_col, title='Buy', offset=0)
//++++++++++++++++++++++++++++++++++
//++++++++++++ Backtest ++++++++++++
//++++++++++++++++++++++++++++++++++
strategy.entry("Long",strategy.long,when=BuySignal)
strategy.close("Long",when=CloseBuy)
strategy.entry("Short",strategy.short,when=SellSignal)
strategy.close("Short",when=CloseSell)
//EOF

Thêm nữa