
Chiến lược này là chiến lược giao dịch đảo ngược kết hợp dựa trên mô hình hai yếu tố. Nó tích hợp hai yếu tố 123 hình dạng đảo ngược và chỉ số gia tăng, thực hiện hiệu ứng cộng của tín hiệu chiến lược.
Nhân này hoạt động dựa trên hình thức 123 của giá. Nếu hai ngày hiện tại có mối quan hệ giá đóng cửa là giá thấp - cao và chỉ số Stoch thấp hơn 50, hãy đánh giá là tín hiệu đảo ngược đáy, làm nhiều; Nếu hai ngày hiện tại có mối quan hệ giá đóng cửa là giá cao - thấp và chỉ số Stoch cao hơn 50, hãy đánh giá là tín hiệu đảo ngược đỉnh, làm trống.
Yếu tố này dựa trên sự gia tăng hoặc giảm của phạm vi biến động giá để đánh giá xu hướng đảo ngược. Khi phạm vi biến động tăng, chỉ số tăng lên, và khi phạm vi giảm, chỉ số giảm. Khi chỉ số vượt qua một ngưỡng, nó tạo ra tín hiệu giảm giá, và khi đi xuống, nó tạo ra tín hiệu tăng giá.
Chỉ có tín hiệu đồng chiều của hai yếu tố mới mở vị trí, tạo ra lợi nhuận chiến lược và tránh rủi ro tín hiệu sai của một yếu tố đơn lẻ.
Có thể giảm nguy cơ bằng cách mở rộng tập huấn luyện, dừng nghiêm ngặt, lọc đa yếu tố.
Chiến lược này kết hợp hai yếu tố hình dạng giá và chỉ số biến động, chỉ mở vị trí khi hai yếu tố phát ra tín hiệu đồng chiều, tránh rủi ro tín hiệu giả do một yếu tố duy nhất mang lại, do đó cải thiện sự ổn định tổng thể của chiến lược. Nhưng cũng có rủi ro của hai yếu tố có xác suất nhất định phát ra tín hiệu sai đồng thời. Chúng ta có thể nâng cao hơn nữa hiệu suất chiến lược và rủi ro điều chỉnh lợi nhuận bằng các phương tiện như mở rộng tập huấn luyện, thiết lập dừng và tối ưu hóa kết hợp các yếu tố tổn thất.
/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 22/02/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 Mass Index was designed to identify trend reversals by measuring
// the narrowing and widening of the range between the high and low prices.
// As this range widens, the Mass Index increases; as the range narrows
// the Mass Index decreases.
// The Mass Index was developed by Donald Dorsey.
//
// 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
MASS(Length1,Length2,Trigger) =>
pos = 0.0
xPrice = high - low
xEMA = ema(xPrice, Length1)
xSmoothXAvg = ema(xEMA, Length1)
nRes = sum(iff(xSmoothXAvg != 0, xEMA / xSmoothXAvg, 0), Length2)
pos := iff(nRes > Trigger, -1,
iff(nRes < Trigger, 1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & MASS Index", 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, "---- MASS Index ----")
Length1 = input(9, minval=1)
Length2 = input(25, minval=1)
Trigger = input(26.5, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMASS = MASS(Length1,Length2,Trigger)
pos = iff(posReversal123 == 1 and posMASS == 1 , 1,
iff(posReversal123 == -1 and posMASS == -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 )