
Chiến lược này là một chiến lược chỉ số sử dụng các điểm cao thấp trong ngắn hạn và sự chênh lệch giữa chi phí trung bình trong ngắn hạn và dài hạn để đánh giá xu hướng. Chiến lược này nhằm tăng độ nhạy của đường ngắn, giảm tổn thất trong tổng hợp bằng cách tăng hàm phẳng trung bình trước và sau để giảm tổn thất nhỏ trong tổng hợp, trong khi vẫn giữ lợi nhuận lớn khi xuất hiện trong dải sóng.
Tính chi phí ngắn hạn: Sử dụng hàm ta.highest và ta.lowest để tính giá cao nhất và giá thấp nhất của dòng shortTerm root K gần đây nhất, sau đó lấy trung bình là chi phí ngắn hạn
Tính chi phí dài hạn: Sử dụng hàm ta.sma để tính trung bình di chuyển đơn giản của giá đóng cửa gần đây của đường longTerm root K như chi phí dài hạn
Tính trung bình: chi phí ngắn hạn trừ chi phí dài hạn
Đường trung bình trơn: Đường trung bình được xử lý trơn để giảm sai lầm, ở đây ta.sma được sử dụng để làm trung bình di chuyển đơn giản
Xác định xu hướng: thiết lập ngưỡng giá, khi trung bình mịn lớn hơn ngưỡng thì được đánh giá là xu hướng tăng, khi thấp hơn ngưỡng âm thì được đánh giá là xu hướng giảm
Nhập và ra sân: theo dõi xu hướng tăng khi chơi nhiều, theo dõi xu hướng giảm khi chơi ít
Phương pháp giải quyết rủi ro:
Chiến lược này nói chung là một chiến lược theo dõi xu hướng rất đơn giản và trực tiếp. So với các chỉ số như trung bình di chuyển phổ biến, nó có thể đánh giá xu hướng chuyển đổi nhanh hơn bằng cách tính toán chênh lệch chi phí ngắn và dài hạn. Đồng thời, xử lý trơn tru cũng làm cho các tham số của nó có nhiều không gian tối ưu hóa, có thể cân bằng độ nhạy và tỷ lệ sai lệ bằng cách điều chỉnh các tham số trơn tru.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dead0001ing1
//@version=5
strategy("Trend-Following Indicator", overlay=true)
// 設置參數
shortTerm = input(5, "Short Term")
longTerm = input(20, "Long Term")
smooth = input(5, "Smoothing")
threshold = input(0, "Threshold")
// 計算短期成本
shortH = ta.highest(high, shortTerm)
shortL = ta.lowest(low, shortTerm)
shortCost = (shortH + shortL) / 2
// 計算長期成本
longCost = ta.sma(close, longTerm)
// 計算均差
deviation = shortCost - longCost
// 平滑均差
smoothedDeviation = ta.sma(deviation, smooth)
// 判斷順勢
isTrendingUp = smoothedDeviation > threshold
isTrendingDown = smoothedDeviation < -threshold
// 顯示順勢信號
plotshape(isTrendingUp, title="Trending Up", location=location.belowbar, color=color.green, style=shape.labelup, text="Up", size=size.small)
plotshape(isTrendingDown, title="Trending Down", location=location.abovebar, color=color.red, style=shape.labeldown, text="Down", size=size.small)
// 定義進出場策略
if isTrendingUp
strategy.entry("Long", strategy.long)
strategy.close("Long", when=isTrendingDown)
if isTrendingDown
strategy.entry("Short", strategy.short)
strategy.close("Short", when=isTrendingUp)