Die Z-Score-Preis-Breakout-Strategie nutzt die Standard-Score-Indikatoren des Preises, um zu bestimmen, ob der aktuelle Preis in einem außergewöhnlichen Zustand ist, wodurch ein Handelssignal erzeugt wird. Wenn der Standard-Score des Preises höher oder niedriger als ein bestimmter Tiefpunkt ist, zeigt dies an, dass der Preis in einen außergewöhnlichen Zustand geraten ist.
Der Kernindikator der Strategie ist der Z-Score der Preise, der wie folgt berechnet wird:
Z_score = (C - SMA(n)) / StdDev(C,n)
C ist der Schlusskurs, SMA (n) ist der einfache Moving Average für n Perioden, StdDev (C, n) ist die Standarddifferenz für n Perioden.
Der Standard-Score spiegelt die Abweichung des aktuellen Preises vom Durchschnittspreis wider. Wenn der Preis-Standard-Score größer als eine bestimmte positive Schwelle (z. B. +2) ist, bedeutet dies, dass der aktuelle Preis 2 Standarddifferenzen über dem Durchschnittspreis liegt und zu einem relativ hohen Niveau gehört. Wenn er kleiner als eine bestimmte negative Schwelle (z. B. -2) ist, bedeutet dies, dass der aktuelle Preis 2 Standarddifferenzen unter dem Durchschnittspreis liegt und zu einem relativ niedrigen Niveau gehört.
Die Strategie berechnet zuerst den Standard-Score des Preises und setzt dann einen positiven und negativen Schwellenwert (wie 0 und 0), der ein Kaufsignal erzeugt, wenn der Standard-Score über dem positiven Schwellenwert liegt, und ein Verkaufssignal erzeugt, wenn er unter dem negativen Schwellenwert liegt.
Die Standard-Score-Preis-Breakthrough-Strategie beurteilt, ob der aktuelle Preis in einem außergewöhnlichen Zustand ist, und handelt auf der Grundlage der positiv-negativen Preis-Standard-Score. Die Strategie ist einfach und beidseitig handelbar, aber es gibt auch ein gewisses Risiko. Durch Parameteroptimierung und Stop-Loss kann die Strategie verstärkt werden, um ein vollständiges quantifiziertes Handelssystem mit anderen Kennzahlen zu bilden.
/*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")