Chiến lược đột phá giá Z-Score sử dụng chỉ số giá z-score để xác định xem giá hiện tại có ở trạng thái bất thường hay không, để tạo ra tín hiệu giao dịch. Khi điểm z-score của giá cao hơn hoặc thấp hơn ngưỡng, điều đó có nghĩa là giá đã bước vào trạng thái bất thường, tại thời điểm đó có thể có các vị trí dài hoặc ngắn.
Chỉ số cốt lõi của chiến lược này là điểm số z của giá, được tính như sau:
Z_score = (C - SMA(n)) / StdDev(C,n)
Trong đó C là giá đóng cửa, SMA (n) là trung bình di chuyển đơn giản của n giai đoạn và StdDev (C,n) là độ lệch chuẩn của giá đóng cửa cho n giai đoạn.
Điểm số z phản ánh mức độ lệch của giá hiện tại so với giá trung bình. Khi điểm số z của giá lớn hơn một ngưỡng dương tính nhất định (ví dụ +2), nó có nghĩa là giá hiện tại cao hơn giá trung bình 2 độ lệch chuẩn, đó là một mức độ tương đối cao. Khi thấp hơn một ngưỡng âm nhất định (ví dụ -2), nó có nghĩa là giá hiện tại thấp hơn giá trung bình 2 độ lệch chuẩn, đó là một mức độ tương đối thấp.
Chiến lược này đầu tiên tính toán điểm số z của giá, sau đó thiết lập ngưỡng dương và âm (ví dụ 0 và 0). Khi điểm số z cao hơn ngưỡng dương, nó tạo ra tín hiệu mua. Khi thấp hơn ngưỡng âm, nó tạo ra tín hiệu bán.
Chiến lược thoát giá z-score đánh giá giá liệu giá hiện tại có ở trạng thái bất thường hay không, và giao dịch theo điểm tích cực và âm của điểm số giá z. Chiến lược này đơn giản và dễ thực hiện, cho phép giao dịch hai chiều, nhưng cũng có một số rủi ro. Bằng cách tối ưu hóa các tham số, thêm stop loss và kết hợp với các chỉ số khác, chiến lược này có thể được nâng cao để tạo thành một hệ thống giao dịch định lượng hoàn chỉnh.
/*backtest start: 2023-11-29 00:00:00 end: 2023-12-04 19:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 18/01/2017 // The author of this indicator is Veronique Valcu. The z-score (z) for a data // item x measures the distance (in standard deviations StdDev) and direction // of the item from its mean (U): // z = (x-StdDev) / U // A value of zero indicates that the data item x is equal to the mean U, while // positive or negative values show that the data item is above (x>U) or below // (x Values of +2 and -2 show that the data item is two standard deviations // above or below the chosen mean, respectively, and over 95.5% of all data // items are contained within these two horizontal references (see Figure 1). // We substitute x with the closing price C, the mean U with simple moving // average (SMA) of n periods (n), and StdDev with the standard deviation of // closing prices for n periods, the above formula becomes: // Z_score = (C - SMA(n)) / StdDev(C,n) // The z-score indicator is not new, but its use can be seen as a supplement to // Bollinger bands. It offers a simple way to assess the position of the price // vis-a-vis its resistance and support levels expressed by the Bollinger Bands. // In addition, crossings of z-score averages may signal the start or the end of // a tradable trend. Traders may take a step further and look for stronger signals // by identifying common crossing points of z-score, its average, and average of average. // // You can change long to short in the Input Settings // Please, use it only for learning or paper trading. Do not for real trading. //////////////////////////////////////////////////////////// strategy(title="Z-Score Strategy", shorttitle="Z-Score Strategy") Period = input(20, minval=1) Trigger = input(0) reverse = input(false, title="Trade reverse") hline(Trigger, color=purple, linestyle=line) xStdDev = stdev(close, Period) xMA = sma(close, Period) nRes = (close - xMA) / xStdDev pos = iff(nRes > Trigger, 1, iff(nRes < Trigger, -1, nz(pos[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) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(nRes, color=blue, title="Z-Score")