
Chiến lược này là một chiến lược theo dõi xu hướng thích ứng được điều khiển bởi mô hình đa yếu tố. Nó tích hợp nhiều chỉ số như RSI, MACD, Stochastics để xây dựng mô hình đa yếu tố để đánh giá xu hướng. Đồng thời, nó có cơ chế dừng tự động, có thể điều chỉnh giá dừng theo động thái ATR để kiểm soát rủi ro.
Chiến lược này sử dụng nhiều chỉ số để xây dựng mô hình để xác định xu hướng. Đầu tiên, nó kết hợp với RSI, MACD để xác định hướng xu hướng; sau đó, kết hợp với Stochastics để xác định xem có quá mua quá bán hay không, lọc một số tín hiệu. Sau khi nhập lệnh, nó sử dụng ATR để tính toán tham số rủi ro để thực hiện dừng tự điều chỉnh.
Cụ thể, nó tạo ra tín hiệu mua khi RSI cao hơn 52 và MACD Gold Forks; nó tạo ra tín hiệu bán khi RSI thấp hơn 48 và MACD Dead Forks. Để lọc tín hiệu giả, nó cũng sẽ phát hiện Stochastics có mua quá mức hay bán quá mức không. Về mặt dừng lỗ, nó dựa trên tham số tính toán ATR để thực hiện dừng tự động, có thể kiểm soát hiệu quả rủi ro dừng lỗ đơn.
Ưu điểm lớn nhất của chiến lược này là khả năng kiểm soát rủi ro mạnh mẽ. Bằng cách phân tích mô hình đa yếu tố để đánh giá hướng xu hướng, bạn có thể lọc một phần tiếng ồn, cải thiện chất lượng tín hiệu. Đồng thời, cơ chế dừng lỗ thích ứng có thể điều chỉnh mức độ dừng lỗ theo mức độ biến động của thị trường, kiểm soát hiệu quả tổn thất đơn lẻ.
Ngoài ra, các tham số của chiến lược này được thiết lập hợp lý và có hiệu quả đo lường tốt hơn. Tài sản có chu kỳ khác nhau có thể được tối ưu hóa bằng cách điều chỉnh các tham số. Nó có thể thích ứng với nhiều môi trường thị trường hơn bằng cách tối ưu hóa tham số.
Rủi ro chính của chiến lược này nằm ở chất lượng xây dựng mô hình đa yếu tố. Nếu mô hình được xây dựng không đúng cách, không thể xác định được xu hướng một cách hiệu quả, sẽ tạo ra nhiều tín hiệu sai. Ngoài ra, chính chiến lược dừng lỗ có nguy cơ bị mạo hiểm.
Để giảm những rủi ro này, có thể cải thiện từ việc điều chỉnh trọng lượng mô hình, tối ưu hóa các thiết lập tham số, kết hợp các chiến lược dừng lỗ khác.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Điều chỉnh trọng số chỉ số trong mô hình đa yếu tố để tìm ra sự kết hợp trọng số tối ưu
Kiểm tra nhiều chỉ số hơn, như CCI, tỷ lệ dao động, mô hình đa yếu tố phong phú
Cài đặt tham số tối ưu hóa để phù hợp với nhiều giống và chu kỳ
Thử các chiến lược dừng lỗ khác nhau để tìm ra sự kết hợp tốt nhất
Thêm mô-đun đào tạo mô hình và mô-đun đánh giá chiến lược, thực hiện điều khiển học máy
Chiến lược này kết hợp các mô hình đa yếu tố và cơ chế dừng lỗ thích ứng, kết hợp hữu cơ giữa phán đoán xu hướng và kiểm soát rủi ro. Nó có hiệu quả phản hồi tốt và có khả năng mở rộng. Với sự tối ưu hóa liên tục, nó có thể trở thành một chiến lược định lượng đáng giá trong thời gian dài.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="TradersAI_UTBot", overlay = true)
// CREDITS to @HPotter for the orginal code.
// CREDITS to @Yo_adriiiiaan for recently publishing the UT Bot study based on the original code -
// I just added some simple code to turn it into a strategy so that you all can backtest it to see the results for yourself!
// Use this strategy on your favorite instrumnet and timeframe, with your favorite settings
// While @Yo_adriiiiaan mentions it works best on a 4-hour timeframe or above,
// I am happy to share here this working on a 15-minute chart on e-mini S&P 500 Index (using the KeyValue setting at 10)
// I am sure different people would discover different settings that work best for their preferred instrumnet/timeframe etc.
// Play with it and enjoy! And, don't forget to share any positive results you might get! Good luck with your trading!
SOURCE = input(hlc3)
RSILENGTH = input(14, title = "RSI LENGTH")
RSICENTERLINE = input(52, title = "RSI CENTER LINE")
MACDFASTLENGTH = input(7, title = "MACD FAST LENGTH")
MACDSLOWLENGTH = input(12, title = "MACD SLOW LENGTH")
MACDSIGNALSMOOTHING = input(12, title = "MACD SIGNAL SMOOTHING")
a = input(10, title = "Key Vaule. 'This changes the sensitivity'")
SmoothK = input(3)
SmoothD = input(3)
LengthRSI = input(14)
LengthStoch = input(14)
RSISource = input(close)
c = input(10, title="ATR Period")
xATR = atr(c)
nLoss = a * xATR
xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss),
iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos = iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))
color = pos == -1 ? red: pos == 1 ? green : blue
ema= ema(close,1)
above = crossover(ema,xATRTrailingStop )
below = crossover(xATRTrailingStop,ema)
buy = close > xATRTrailingStop and above
sell = close < xATRTrailingStop and below
barbuy = close > xATRTrailingStop
barsell = close < xATRTrailingStop
plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= green,textcolor = white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= red,textcolor = white, transp = 0, size = size.tiny)
barcolor(barbuy? green:na)
barcolor(barsell? red:na)
alertcondition(buy, title='Buy', message='Buy')
alertcondition(sell, title='Sell', message='Sell')
if(buy)
strategy.entry("UTBotBuy",strategy.long)
if(sell)
strategy.entry("UTBotSell",strategy.short)