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.
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 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.
Có một số điều cần xem xét để giảm thiểu rủi ro:
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.
/*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 )