Chiến lược RSI Momentum đảo ngược kép


Ngày tạo: 2023-09-26 15:42:48 sửa đổi lần cuối: 2023-09-26 15:42:48
sao chép: 1 Số nhấp chuột: 691
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này thực hiện lọc tín hiệu kép bằng cách kết hợp chiến lược đảo ngược hình dạng 123 và chiến lược động lực RSI để thực hiện các mục có xác suất cao tại các điểm đảo ngược xu hướng.

Phân tích

123 chiến lược đảo ngược hình dạng

Chiến lược này bắt nguồn từ Ulf Jensen’s How to get three-fold returns in the futures market (tạm dịch: Làm thế nào để có được lợi nhuận gấp ba lần trong thị trường tương lai) trang 183. Nguyên tắc của chiến lược này là đánh giá cơ hội đảo ngược xu hướng tiềm ẩn trong giai đoạn tổng hợp.

Cụ thể, khi giá đóng cửa 2 ngày liên tiếp cao hơn giá đóng cửa ngày hôm trước và đường Slow K thấp hơn 50 ngày thứ 9, hãy làm nhiều; khi giá đóng cửa 2 ngày liên tiếp thấp hơn giá đóng cửa ngày hôm trước và đường Fast K cao hơn 50 ngày thứ 9, hãy làm trống.

Vì vậy, chiến lược này về cơ bản là đánh giá cơ hội đảo ngược tiềm năng bằng chỉ số Stochastic.

Chiến lược động lực RSI

Chiến lược này sử dụng hàm ROC để tính toán tỷ lệ thay đổi giá và xây dựng chỉ số RSI dựa trên tỷ lệ thay đổi giá để xác định xu hướng động lực.

Khi RSI thấp hơn vùng mua cho thấy động lực tăng giá tăng nhanh hơn, làm nhiều; khi RSI cao hơn vùng bán cho thấy động lực giảm giá tăng nhanh hơn, làm trống.

Ưu điểm

  • Chiến lược đảo ngược hình dạng 123 có thể đánh giá điểm đảo ngược tiềm năng sau khi tổng hợp
  • Chiến lược động lực RSI có thể lọc hiệu quả các đột phá giả mạo
  • Hai tín hiệu chiến lược tích lũy thành tín hiệu nhập cảnh mạnh mẽ

Rủi ro

  • Hình dạng 123 dễ bị chồng lên đầu hoặc phá vỡ giả, cần được lọc với các chỉ số khác
  • RSI tự nó vẫn dựa trên giá cả, không thể hoàn toàn tránh được sự cố.
  • Có thể bỏ lỡ điểm vào tốt hơn khi tín hiệu kép tích lũy

Có một số điều cần xem xét để giảm thiểu rủi ro:

  1. Điều chỉnh các tham số của chỉ số Stochastic để xác định xu hướng bằng cách sử dụng chu kỳ dài hơn
  2. Điều chỉnh các tham số của RSI để mua ở vùng thấp và bán ở vùng cao
  3. Cân nhắc sử dụng một tín hiệu duy nhất

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

  • Các tham số chu kỳ ROC có thể được thử nghiệm để tìm các tham số phù hợp hơn cho một giống cụ thể
  • Có thể kiểm tra 123 logic định hình hình dạng, chẳng hạn như điều chỉnh tham số K-line nhanh và chậm
  • Các tham số RSI có thể được thử nghiệm để xác định vùng mua và bán phù hợp hơn
  • Bạn có thể thử các chỉ số khác như MACD thay cho Stochastic
  • Có thể kiểm tra hiệu quả chỉ với một tín hiệu chiến lược

Tóm tắt

Chiến lược này có thể được tối ưu hóa và điều chỉnh các tham số, người dùng có thể thử nghiệm theo các giống và sở thích giao dịch khác nhau. Tuy nhiên, cũng nên chú ý đến nguy cơ các tín hiệu kép có thể bỏ lỡ thời điểm vào. Nói chung, chiến lược này cung cấp một cách suy nghĩ và khuôn khổ để đánh giá hiệu quả các xu hướng đảo ngược.

Mã nguồn chiến lược
/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 17/06/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This is the new-age indicator which is version of RSI calculated upon 
// the Rate-of-change indicator.
// The name "Relative Strength Index" is slightly misleading as the RSI 
// does not compare the relative strength of two securities, but rather 
// the internal strength of a single security. A more appropriate name 
// might be "Internal Strength Index." Relative strength charts that compare 
// two market indices, which are often referred to as Comparative Relative Strength.
// And in its turn, the Rate-of-Change ("ROC") indicator displays the difference 
// between the current price and the price x-time periods ago. The difference can 
// be displayed in either points or as a percentage. The Momentum indicator displays 
// the same information, but expresses it as a ratio.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


RSI_ROC(RSILength,ROCLength,BuyZone,SellZone) =>
    pos = 0.0
    xPrice = close
    nRes = rsi(roc(xPrice,ROCLength),RSILength)
    pos := iff(nRes < BuyZone, -1,
	         iff(nRes > SellZone, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & RSI based on ROC", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- RSI based on ROC ----")
RSILength = input(20, minval=1)
ROCLength = input(20, minval=1)
BuyZone = input(30, minval=1)
SellZone = input(70, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posRSI_ROC = RSI_ROC(RSILength,ROCLength,BuyZone,SellZone)
pos = iff(posReversal123 == 1 and posRSI_ROC == 1 , 1,
	   iff(posReversal123 == -1 and posRSI_ROC == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1 ) 
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )