
Chiến lược này thực hiện mô hình đa yếu tố bằng cách kết hợp sử dụng chỉ số động lực CMO và chỉ số đảo ngược Stochastic để khám phá các cơ hội giao dịch trong các môi trường thị trường khác nhau.
Chiến lược này bao gồm hai chiến lược con:
123 Chiến lược đảo ngược
Chiến lược giá trị tuyệt đối CMO
Cuối cùng, nếu hai tín hiệu chiến lược con phù hợp, tín hiệu giao dịch sẽ được phát ra.
Chiến lược này tận dụng lợi thế của chỉ số động lực CMO và chỉ số đảo ngược Stochastic. CMO có thể nhận ra xu hướng tốt hơn, còn Stochastic có thể phát hiện cơ hội đảo ngược ngắn hạn.
Chiến lược này có những ưu điểm sau:
Mô hình đa yếu tố, kết hợp động lượng và đảo ngược, thích ứng với các môi trường thị trường khác nhau
CMO có khả năng nhận biết xu hướng, Stochastic có khả năng đánh giá các điểm đảo ngược
Chỉ giao dịch khi hai tín hiệu phù hợp, tránh tín hiệu sai và tăng tỷ lệ lợi nhuận
Các tham số tối ưu có nhiều không gian, có thể điều chỉnh cho các giống và chu kỳ khác nhau
Kết hợp các chỉ số ngắn và dài để khám phá thêm cơ hội giao dịch
Quy tắc đơn giản, rõ ràng, dễ hiểu và phù hợp với giao dịch thuật toán
Chiến lược này cũng có những rủi ro sau:
Có khả năng các chiến lược con phát ra tín hiệu sai và cần phải tối ưu hóa các tham số
Sự kiện bất ngờ khiến xu hướng đảo ngược, gây ra tổn thất lớn hơn
Tỷ lệ giao dịch có thể quá cao, chi phí giao dịch là một yếu tố cần xem xét
Các chiến lược con đều là các chỉ số trì hoãn, có vấn đề về thời gian trễ
Cần điều chỉnh tham số cho các giống khác nhau, yêu cầu tối ưu hóa tham số cao hơn
Phản ứng:
Các tham số chiến lược phụ tối ưu hóa để giảm khả năng tín hiệu sai
Thiết lập dừng lỗ, kiểm soát lỗ đơn
Điều chỉnh các điều kiện mở cửa để giảm tần suất giao dịch
Sử dụng dữ liệu tick theo thời gian thực để giảm sự chậm trễ
Tự động tối ưu hóa tham số bằng cách sử dụng phương pháp học máy
Chính sách này có thể được tối ưu hóa bằng cách:
Nhập nhiều yếu tố hơn, chẳng hạn như tỷ lệ biến động, giá trị, v.v., để tạo ra mô hình đa yếu tố có hệ thống
Xây dựng cơ chế tối ưu hóa tham số động, điều chỉnh tham số theo tình hình thị trường
Tối ưu hóa logic mở vị trí, đưa ra các phương pháp như xác suất và trơn tru chỉ số
Đảm bảo mục tiêu kép trong việc bảo vệ các vị thế dài hạn trong thời gian ngắn
Sử dụng Deep Learning để trích xuất nhiều tính năng hơn, xây dựng các quy tắc giao dịch phi tuyến tính
Khám phá các mô hình không tham số, tránh sự sai lệch của tham số chọn nhân tạo
Kết hợp dữ liệu tần số cao, các sự kiện tin tức, giảm sự chậm trễ tín hiệu
Chiến lược này thực hiện mô hình đa yếu tố để khám phá nhiều cơ hội giao dịch trong thị trường chuyển động bằng cách sử dụng chỉ số động lực CMO và chỉ số đảo ngược Stochastic. So với chỉ số đơn lẻ, kết hợp đa yếu tố có thể thích ứng với môi trường thị trường phức tạp hơn. Đồng thời, không gian tối ưu hóa tham số của chiến lược này rộng lớn, quy tắc đơn giản, phù hợp với phát triển giao dịch thuật toán.
/*backtest
start: 2023-09-22 00:00:00
end: 2023-10-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 17/09/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
// This indicator plots the absolute value of CMO. CMO was developed by Tushar
// Chande. A scientist, an inventor, and a respected trading system developer,
// Mr. Chande developed the CMO to capture what he calls "pure momentum". For
// more definitive information on the CMO and other indicators we recommend the
// book The New Technical Trader by Tushar Chande and Stanley Kroll.
// The CMO is closely related to, yet unique from, other momentum oriented indicators
// such as Relative Strength Index, Stochastic, Rate-of-Change, etc. It is most closely
// related to Welles Wilder`s RSI, yet it differs in several ways:
// - It uses data for both up days and down days in the numerator, thereby directly
// measuring momentum;
// - The calculations are applied on unsmoothed data. Therefore, short-term extreme
// movements in price are not hidden. Once calculated, smoothing can be applied to
// the CMO, if desired;
// - The scale is bounded between +100 and -100, thereby allowing you to clearly see
// changes in net momentum using the 0 level. The bounded scale also allows you to
// conveniently compare values across different securities.
//
// 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
CMOabs(Length, TopBand, LowBand) =>
pos = 0
xMom = abs(close - close[1])
xSMA_mom = sma(xMom, Length)
xMomLength = close - close[Length]
nRes = abs(100 * (xMomLength / (xSMA_mom * Length)))
pos := iff(nRes > TopBand, -1,
iff(nRes < LowBand, 1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & CMOabs", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthCMO = input(9, minval=1)
TopBand = input(70, minval=1)
LowBand = input(20, maxval=0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCMOabs = CMOabs(LengthCMO, TopBand, LowBand)
pos = iff(posReversal123 == 1 and posCMOabs == 1 , 1,
iff(posReversal123 == -1 and posCMOabs == -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 )