Chiến lược này kết hợp các chiến lược 123 đảo ngược, chiến lược DMI và chiến lược trung bình di chuyển để tạo ra một chiến lược kết hợp mạnh mẽ. Chiến lược này có thể thực hiện hoạt động ngược tại điểm đảo ngược xu hướng, có thể hoạt động trơn tru khi xu hướng tiếp tục, đồng thời sử dụng trung bình di chuyển để lọc, có thể xác định hiệu quả hướng xu hướng thị trường và tăng tỷ lệ chiến lược.
123 Chiến lược đảo ngược: Khi giá đóng cửa sau 2 ngày liên tiếp thấp hơn giá đóng cửa ngày hôm trước chuyển sang giá đóng cửa ngày hôm trước cao hơn, và 9 ngày đường K chậm thấp hơn 50 khi làm nhiều; Khi giá đóng cửa sau 2 ngày liên tiếp cao hơn giá đóng cửa ngày hôm trước chuyển sang giá đóng cửa ngày hôm trước thấp hơn, và 9 ngày đường K nhanh hơn 50 khi làm trống.
Chiến lược DMI: làm nhiều khi + DI trên đường đi qua - DI; làm trống khi + DI dưới đường đi qua - DI
Chiến lược trung bình di chuyển: làm nhiều khi giá đóng cửa trên trung bình di chuyển; làm trống khi giá đóng cửa dưới trung bình di chuyển.
Ba tín hiệu chiến lược phát ra tín hiệu đồng chiều để mở vị trí, nếu không thì bằng.
Chiến lược này kết hợp chiến lược xu hướng và chiến lược đảo ngược, có thể bắt kịp cơ hội đảo ngược giá trong khi không bỏ lỡ cơ hội chạy xu hướng. Bộ lọc trung bình di chuyển có thể làm giảm tín hiệu giả. Nhiều chiến lược xác minh lẫn nhau, có thể làm tăng độ tin cậy của tín hiệu.
Kết hợp nhiều chiến lược để tăng tỷ lệ thắng. Chiến lược đảo ngược 123 có thể nắm bắt các điểm biến đổi, chiến lược DMI có thể nắm bắt xu hướng, trung bình di chuyển có thể lọc tín hiệu.
Chiến lược đảo ngược được kết hợp với chiến lược xu hướng, có thể nắm bắt cả đảo ngược và xu hướng, giao dịch linh hoạt.
Sử dụng bộ lọc trung bình di chuyển để giảm tín hiệu giả do biến động ngắn hạn.
Một sự kết hợp nhiều chiến lược có thể xác nhận tín hiệu với nhau, tránh việc một chiến lược đơn lẻ bị thất bại do bị ảnh hưởng bởi một môi trường thị trường nhất định.
Có nhiều tham số chiến lược, bạn có thể tìm ra sự kết hợp tham số tốt nhất bằng cách tối ưu hóa để tăng sự ổn định của chiến lược.
Chiến lược đảo ngược dễ bị mắc kẹt trong xu hướng dao động. Có thể tránh được bằng cách kết hợp chiến lược xu hướng.
Chiến lược DMI có thể bỏ lỡ cơ hội ở giai đoạn đầu của xu hướng. Các tham số của DMI có thể được rút gọn thích hợp để tăng độ nhạy.
Đường trung bình di chuyển có độ trễ, có thể làm chậm tín hiệu tạo. Các chu kỳ có thể được rút ngắn thích hợp để tăng tốc độ phản ứng.
Việc kết hợp nhiều chiến lược có thể làm tăng tỷ lệ chiến thắng, nhưng cũng làm tăng sự phức tạp của chiến lược.
Chiến lược này nhạy cảm với chi phí giao dịch. Khuyến nghị mở rộng phạm vi dừng lỗ thích hợp và tránh mở lỗ quá thường xuyên.
Tối ưu hóa các tham số chính sách để tìm ra sự kết hợp tốt nhất.
Thêm các tín hiệu lọc các chỉ số khác như MACD, RSI, v.v. để tăng cường sự ổn định của chiến lược.
Tăng các chiến lược dừng lỗ, chẳng hạn như dừng xu hướng, dừng rung, và kiểm soát rủi ro.
Tối ưu hóa quản lý vị trí, chẳng hạn như vị trí cố định, vị trí động, v.v., để tăng tỷ lệ lợi nhuận chiến lược.
Điều chỉnh tham số cho các giống cụ thể để cải thiện khả năng thích ứng của chiến lược.
Thêm mô hình học máy hỗ trợ quyết định, sử dụng nhiều dữ liệu lịch sử hơn để nâng cao hiệu suất chiến lược.
Chiến lược này tạo thành một chiến lược tổng hợp linh hoạt và đa biến bằng cách kết hợp hiệu quả các chiến lược đảo ngược, chiến lược xu hướng và lọc đường trung bình di chuyển. Nó có thể nắm bắt cả điểm biến đổi giá cả và sự tiếp tục của xu hướng, cải thiện sự ổn định và độ tin cậy của tín hiệu thông qua sự kết hợp nhiều chiến lược.
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-18 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 15/10/2019
// 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 related article is copyrighted material from Stocks & Commodities Aug 2009
//
// 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
fFilter(xSeriesSum, xSeriesV, Filter) =>
iff(xSeriesV > Filter, xSeriesSum, 0)
DMIMA(Length_MA, Length_DMI) =>
pos = 0.0
xMA = sma(close, Length_MA)
up = change(high)
down = -change(low)
trur = rma(tr, Length_DMI)
xPDI = fixnan(100 * rma(up > down and up > 0 ? up : 0, Length_DMI) / trur)
xNDI = fixnan(100 * rma(down > up and down > 0 ? down : 0, Length_DMI) / trur)
nPDI = xPDI
nNDI = xNDI
nMA = xMA
nPDI_1 = xPDI[1]
nNDI_1 = xNDI[1]
nMA_1 = xMA[1]
bMDILong = iff(nPDI > nNDI and nPDI_1 < nNDI_1, true,
iff(nPDI < nNDI and nPDI_1 > nNDI_1, false, false))
bMDIShort = iff(nPDI > nNDI and nPDI_1 < nNDI_1, false,
iff(nPDI < nNDI and nPDI_1 > nNDI_1, true, false))
bMALong = iff(close > nMA and close[1] < nMA_1, true,
iff(close < nMA and close[1] > nMA_1, false, false))
bMAShort = iff(close > nMA and close[1] < nMA_1, false,
iff(close < nMA and close[1] > nMA_1, true, false))
pos := iff(bMDILong and bMALong, 1,
iff(bMDIShort and bMAShort, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & DMI & Moving Average", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_MA = input(30, minval=1)
Length_DMI = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDMIMA = DMIMA(Length_MA,Length_DMI)
pos = iff(posReversal123 == 1 and posDMIMA == 1 , 1,
iff(posReversal123 == -1 and posDMIMA == -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 )