Strategi penembusan harga Z-Score menggunakan penunjuk harga z-score untuk menentukan sama ada harga semasa berada dalam keadaan yang tidak normal, untuk menghasilkan isyarat perdagangan. Apabila z-score harga lebih tinggi atau lebih rendah daripada ambang, ia bermakna harga telah memasuki keadaan yang tidak normal, pada ketika itu kedudukan panjang atau pendek boleh diambil.
Penunjuk teras strategi ini adalah z-score harga, dikira seperti berikut:
Z_score = (C - SMA(n)) / StdDev(C,n)
Di mana C adalah harga penutupan, SMA ((n) adalah purata bergerak mudah untuk n tempoh, dan StdDev ((C,n) adalah penyimpangan standard harga penutupan untuk n tempoh.
Z-score mencerminkan tahap penyimpangan harga semasa dari harga purata. Apabila z-score harga lebih besar daripada ambang positif tertentu (contohnya +2), ia bermakna harga semasa di atas harga purata dengan 2 penyimpangan standard, yang merupakan tahap yang agak tinggi. Apabila ia kurang daripada ambang negatif tertentu (contohnya -2), ia bermakna harga semasa di bawah harga purata dengan 2 penyimpangan standard, yang merupakan tahap yang agak rendah.
Strategi ini mula-mula mengira z-score harga, kemudian menetapkan ambang positif dan negatif (misalnya 0 dan 0). Apabila z-score lebih tinggi daripada ambang positif, ia menghasilkan isyarat beli. Apabila lebih rendah daripada ambang negatif, ia menghasilkan isyarat jual.
Strategi penembusan harga z-score menilai sama ada harga semasa berada dalam keadaan yang tidak normal, dan berdagang mengikut positif dan negatif z-score harga. Strategi ini mudah dan mudah dilaksanakan, membolehkan perdagangan dua hala, tetapi juga mempunyai beberapa risiko. Dengan mengoptimumkan parameter, menambah stop loss dan menggabungkan dengan penunjuk lain, strategi ini boleh ditingkatkan untuk membentuk sistem perdagangan kuantitatif yang lengkap.
/*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")