Chiến lược này tạo ra tín hiệu giao dịch bằng cách kết hợp 123 chỉ số đảo ngược và chỉ số RAVI. Trong đó, 123 đảo ngược là chiến lược đảo ngược, sử dụng giá cổ phiếu trong hai ngày liên tiếp để xác định xu hướng giá trong tương lai. Chỉ số RAVI xác định liệu giá có lọt vào vùng quá mua quá bán hay không. Chiến lược quyết định thực hiện thêm tháo lỗ bằng cách đánh giá tổng hợp cả hai tín hiệu.
Chỉ số này dựa trên giá trị K của chỉ số ngẫu nhiên. Cụ thể hơn, giá đóng cửa hiện tại thấp hơn hai ngày trước và làm nhiều hơn khi đường chậm ngẫu nhiên dưới 50 vào ngày 9. Giá đóng cửa hiện tại cao hơn hai ngày trước và đường nhanh ngẫu nhiên trên 50 vào ngày 9 bằng cách xác nhận vào cửa.
Chỉ số này đánh giá mua bán bằng cách phân cách giữa đường nhanh và đường chậm. Cụ thể là đường trung bình 7 ngày và đường trung bình 65 ngày, khi lớn hơn một tham số nào đó thì làm nhiều, khi nhỏ hơn một tham số nào đó thì làm trống.
Khi 123 quay ngược và RAVI đồng hướng làm nhiều dấu trượt sẽ tạo ra tín hiệu. Tín hiệu làm nhiều cho hai chỉ số là 1, tín hiệu làm trống cho hai chỉ số là -1. Như vậy, thông qua xác nhận kép chỉ số, tránh tín hiệu sai của chỉ số đơn.
Chiến lược tổng hợp xem xét các yếu tố đảo ngược và yếu tố xu hướng, xác nhận giảm khả năng phát ra tín hiệu sai bằng cách xác định hai chỉ số. Bước tiếp theo, có thể giới thiệu các thuật toán học máy, để tối ưu hóa tham số thích ứng.
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 31/05/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
// The indicator represents the relative convergence/divergence of the moving
// averages of the financial asset, increased a hundred times. It is based on
// a different principle than the ADX. Chande suggests a 13-week SMA as the
// basis for the indicator. It represents the quarterly (3 months = 65 working days)
// sentiments of the market participants concerning prices. The short moving average
// comprises 10% of the one and is rounded to seven.
//
// 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
RAVI(LengthMAFast, LengthMASlow, TradeLine) =>
pos = 0.0
xMAF = sma(close, LengthMAFast)
xMAS = sma(close, LengthMASlow)
xRAVI = ((xMAF - xMAS) / xMAS) * 100
pos:= iff(xRAVI > TradeLine, 1,
iff(xRAVI < TradeLine, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Range Action Verification Index (RAVI)", 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, "---- Range Action Verification Index (RAVI) ----")
LengthMAFast = input(title="Length MA Fast", defval=7)
LengthMASlow = input(title="Length MA Slow", defval=65)
TradeLine = input(0.14, step=0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posRAVI = RAVI(LengthMAFast, LengthMASlow, TradeLine)
pos = iff(posReversal123 == 1 and posRAVI == 1 , 1,
iff(posReversal123 == -1 and posRAVI == -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 )