
Chiến lược này kết hợp chỉ số siêu xu hướng và chỉ số kênh hàng hóa (CCI) để thực hiện theo dõi xu hướng và tạo tín hiệu giao dịch trên nhiều khung thời gian. Ý tưởng chính của chiến lược này là sử dụng chỉ số CCI để xác định hướng xu hướng ngắn hạn, đồng thời kết hợp với chỉ số siêu xu hướng để xác định hướng xu hướng trung hạn và dài hạn.
Chỉ số CCI có thể xác định hiện tượng quá mua quá bán, khi chỉ số CCI đi từ dưới lên qua trục 0 là tín hiệu đa đầu, ngược lại là tín hiệu đầu không. Chiến lược này sử dụng tính năng này để xác định hướng xu hướng ngắn hạn.
cci_period = input(28, "CCI Period")
cci = cci(source, cci_period)
ML = input(0, "CCI Mid Line pivot")
Mã trên xác định chu kỳ và vị trí trục trung tâm của chỉ số CCI.
TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up
TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn
Phần mã này sẽ xác định xem cc có đi trên trục 0 hay không, nếu có thì cập nhật đường ray trên của xu hướng siêu, và đường ray dưới để cập nhật đường ray dưới.
Chỉ số siêu xu hướng có thể xác định hướng của xu hướng trung và dài hạn bằng cách kết hợp chỉ số ATR với giá. Khi giá phá vỡ siêu xu hướng, tín hiệu lên là tín hiệu nhiều đầu và tín hiệu xuống là tín hiệu không đầu.
Công thức tính toán cho chỉ số siêu xu hướng trong chiến lược này là:
Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
Trong đó Factor và Pd là các tham số có thể điều chỉnh.
Các biến Trend đánh giá xu hướng hiện tại của siêu xu hướng:
Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)
Bằng cách tích hợp chỉ số CCI và chỉ số xu hướng siêu, chiến lược này thực hiện phán đoán xu hướng trong nhiều khung thời gian. Chỉ số CCI nắm bắt xu hướng ngắn hạn, chỉ số xu hướng siêu phán đoán xu hướng trung hạn.
Một tín hiệu giao dịch đáng tin cậy hơn được tạo ra khi cả hai hướng đều phù hợp.
isLong = st_trend == 1
isShort = st_trend == -1
Thời gian nhập là ngắn hạn và trung hạn đồng hướng, thời gian ra là ngắn hạn và trung hạn và dài hạn ngược.
Chiến lược này kết hợp cả các chỉ số đánh giá xu hướng ngắn hạn và trung hạn, làm cho tín hiệu giao dịch đáng tin cậy hơn.
Các tham số Factor trong chỉ số siêu xu hướng và cc_period của chỉ số CCI có thể được điều chỉnh theo thị trường, giúp chiến lược linh hoạt hơn.
Cấu trúc chiến lược đơn giản, rõ ràng, dễ hiểu và thực hiện, rất phù hợp cho người mới bắt đầu giao dịch số lượng.
Có thể áp dụng cho các thị trường như cổ phiếu, ngoại hối, tiền điện tử, hoặc có thể điều chỉnh tùy theo các tham số để áp dụng cho các loại khác nhau.
Nhiều tín hiệu giả sẽ xuất hiện khi giá dao động mạnh. Các tham số Factor của siêu xu hướng có thể được mở rộng thích hợp, làm giảm tần suất giao dịch của chiến lược.
Siêu xu hướng tự nó không đủ để theo dõi sự mạnh mẽ, nó có thể được xem xét kết hợp với các chỉ số động lực để theo dõi xu hướng trong giai đoạn tăng tốc xu hướng.
Chiến lược này không có thiết lập dừng lỗ, có thể kết hợp với kích thước chỉ số ATR thiết lập trails dừng lỗ.
Điều chỉnh các tham số của siêu xu hướng và CCI theo các đặc điểm của thị trường khác nhau để tăng sự ổn định của chiến lược.
Kết hợp với các chỉ số động lực như MACD, KDJ, theo dõi xu hướng trong giai đoạn tăng tốc xu hướng, có thể thu được lợi nhuận cao hơn.
Sử dụng các phương pháp học máy và học tập tích hợp để tối ưu hóa các tham số chiến lược và quy tắc giao dịch.
Chiến lược này kết hợp thành công với các siêu xu hướng và chỉ số CCI, để thực hiện phán đoán xu hướng trong nhiều khung thời gian. Chiến lược đơn giản, dễ hiểu, tham số có thể điều chỉnh, tiềm năng thu nhập lớn. Có thể được tối ưu hóa hơn nữa bằng cách điều chỉnh, dừng lỗ và học tập tích hợp, làm cho nó trở thành một chiến lược giao dịch đáng tin cậy, ổn định và hiệu quả.
/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//@author=Daveatt
StrategyName = "Best Supertrend CCI Strategy"
ShortStrategyName = "Best Supertrend CCI Strategy"
strategy(title=StrategyName, shorttitle=ShortStrategyName, overlay=true )
//////////////////////////
//* COLOR CONSTANTS *//
//////////////////////////
AQUA = #00FFFFFF
BLUE = #0000FFFF
RED = #FF0000FF
LIME = #00FF00FF
GRAY = #808080FF
DARKRED = #8B0000FF
DARKGREEN = #006400FF
GOLD = #FFD700
WHITE = color.white
// Plots
GREEN_LIGHT = color.new(color.green, 40)
RED_LIGHT = color.new(color.red, 40)
BLUE_LIGHT = color.new(color.aqua, 40)
PURPLE_LIGHT = color.new(color.purple, 40)
source = input(close)
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/////////////////////////////////// CCI /////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
cci_period = input(28, "CCI Period")
cci = cci(source, cci_period)
//UL = input(80, "Upper level")
//LL = input(20, "Lower Level")
ML = input(0, "CCI Mid Line pivot")
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////// SUPERTREND /////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
Factor=input(3,title="[ST] Factor", minval=1,maxval = 100, type=input.float)
Pd=input(3, title="[ST] PD", minval=1,maxval = 100)
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/////////////////////// SUPERTREND DETECTION //////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
f_supertrend(Factor, Pd) =>
Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
TrendUp = 0.0
TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up
TrendDown = 0.0
TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn
Trend = 0.0
Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown
[Trend, Tsl]
[st_trend, st_tsl] = f_supertrend(Factor, Pd)
// Plot the ST
linecolor = close >= st_tsl ? color.green : color.red
plot(st_tsl, color = linecolor , linewidth = 3,title = "SuperTrend", transp=0)
isLong = st_trend == 1
isShort = st_trend == -1
longClose = isLong[1] and isShort
shortClose = isShort[1] and isLong
strategy.entry("Long", 1, when=isLong)
strategy.close("Long", when=longClose )
strategy.entry("Short", 0, when=isShort)
strategy.close("Short", when=shortClose )