
Z-Score Price Breakout Strategy (Стратегия Z-Score Price Breakout Strategy) использует стандартные показатели цены, чтобы определить, находится ли текущая цена в аномальном состоянии, что создает торговый сигнал. Когда стандартный балл цены выше или ниже определенного порога, это указывает на то, что цена вошла в аномальное состояние.
Центральным показателем этой стратегии является стандартный балл цены (Z-Score), формулы которого следующие:
Z_score = (C - SMA(n)) / StdDev(C,n)
где C - цена закрытия, SMA (n) - простая скользящая средняя за n циклов, StdDev (C,n) - стандартная разница за n циклов.
Стандартный балл отражает степень отклонения текущей цены от средней цены. Когда стандартный балл цены больше, чем определенное положительное отклонение (например, +2), это означает, что текущая цена уже выше, чем средняя цена на 2 стандартных отклонения, и относится к относительно высокому уровню; когда меньше, чем определенное отрицательное отклонение (например, -2), это означает, что текущая цена уже ниже, чем средняя цена на 2 стандартных отклонения, и относится к относительно низкому уровню.
Эта стратегия сначала рассчитывает стандартный коэффициент цены, а затем устанавливает положительный отрицательный порог (например, 0 и 0), который создает сигнал покупки, когда стандартный коэффициент выше положительного порога, и сигнал продажи, когда он ниже отрицательного порога.
Стратегия прорыва цены стандартных значений определяет, находится ли текущая цена в аномальном состоянии, и торгуется в соответствии с положительным и отрицательным значением ценовых стандартов. Эта стратегия проста и проста, может быть использована в обоих направлениях, но также содержит определенный риск. С помощью таких средств, как оптимизация параметров и остановка убытков, можно усилить эту стратегию, чтобы сформировать полную количественную торговую систему с другими параметрами.
/*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")