Chiến lược theo dõi xu hướng dựa trên mô hình đa yếu tố với Stoploss theo sau thích nghi

Tác giả:ChaoZhang, Ngày: 2023-12-19 11:04:27
Tags:

img

Tổng quan

Chiến lược này là một chiến lược theo dõi xu hướng được thúc đẩy bởi một mô hình đa yếu tố với stoploss theo sau thích nghi. Nó kết hợp nhiều chỉ số như RSI, MACD, Stochastics để xây dựng một mô hình đa yếu tố để xác định hướng xu hướng. Trong khi đó, nó có một cơ chế stoploss theo sau thích nghi điều chỉnh động giá stoploss dựa trên ATR để thực hiện kiểm soát rủi ro.

Nguyên tắc

Chiến lược này sử dụng nhiều chỉ số để xây dựng một mô hình để đánh giá xu hướng. Đầu tiên, nó kết hợp RSI và MACD để xác định hướng xu hướng; sau đó nó sử dụng Stochastics để lọc các tín hiệu mua quá nhiều hoặc bán quá nhiều. Sau khi nhập lệnh, nó sử dụng ATR để tính toán tham số rủi ro và thực hiện stoploss thích nghi.

Cụ thể, nó tạo tín hiệu mua khi RSI trên 52 và MACD giao thoa vàng xảy ra; nó tạo tín hiệu bán khi RSI dưới 48 và MACD giao thoa chết xảy ra. Để lọc các tín hiệu giả, nó cũng phát hiện xem Stochastics đã mua quá hoặc đã bán quá. Đối với stoploss, nó tính toán tham số dựa trên ATR để nhận ra stoploss thích nghi, có thể kiểm soát hiệu quả rủi ro stoploss duy nhất.

Ưu điểm

Lợi thế lớn nhất của chiến lược này nằm ở khả năng kiểm soát rủi ro mạnh mẽ của nó. Bằng cách đánh giá hướng xu hướng với mô hình đa yếu tố, nó có thể lọc một số tiếng ồn và cải thiện chất lượng tín hiệu. Trong khi đó, cơ chế dừng lỗ thích nghi có thể điều chỉnh phạm vi dừng lỗ dựa trên sự biến động của thị trường để kiểm soát hiệu quả lỗ duy nhất.

Ngoài ra, các tham số của chiến lược này được thiết lập hợp lý với kết quả backtesting tốt. Các tài sản chu kỳ khác nhau có thể đạt được tối ưu hóa thông qua điều chỉnh tham số. Nó có thể phù hợp với nhiều môi trường thị trường hơn thông qua tối ưu hóa tham số.

Rủi ro

Rủi ro chính của chiến lược này là chất lượng xây dựng mô hình đa yếu tố. Nếu mô hình không xác định hiệu quả xu hướng, nó sẽ tạo ra các tín hiệu giả lớn. Ngoài ra, các chiến lược stoploss vốn có nguy cơ bị săn lùng.

Để giảm thiểu những rủi ro này, cải tiến có thể được thực hiện từ các khía cạnh như điều chỉnh trọng lượng mô hình, tối ưu hóa cài đặt tham số, kết hợp với các chiến lược dừng lỗ khác.

Hướng dẫn tối ưu hóa

Chiến lược này có thể được tối ưu hóa từ các khía cạnh sau:

  1. Điều chỉnh trọng lượng của các chỉ số trong mô hình đa yếu tố để tìm kết hợp tối ưu

  2. Kiểm tra nhiều chỉ số như CCI, biến động vv để làm phong phú mô hình đa yếu tố

  3. Tối ưu hóa cài đặt tham số để phù hợp với nhiều sản phẩm và chu kỳ hơn

  4. Thử các chiến lược stoploss khác nhau để tìm kết hợp tối ưu

  5. Thêm các mô-đun đào tạo mô hình và đánh giá chiến lược để cho phép máy học lái xe

Tóm lại

Chiến lược này tích hợp mô hình đa yếu tố và cơ chế dừng lỗ thích nghi để đạt được sự kết hợp hữu cơ của phán đoán xu hướng và kiểm soát rủi ro. Nó có kết quả kiểm tra hậu quả tốt và khả năng mở rộng. Với tối ưu hóa liên tục, nó có thể trở thành một chiến lược định lượng có giá trị cho việc nắm giữ dài hạn.


/*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)

Thêm nữa