
Die Strategie verwendet eine gemischte Methode der quantitativen Analyse, die zwei Verteilungsmodelle und Regressionsanalysen kombiniert, um verschiedene Marktzustände zu identifizieren. Die Strategie berechnet zuerst die einfachen Moving Averages (SMA) und die Bollinger Bands (BB) und berechnet dann den Mittelwert und die Standardabweichung der historischen Rendite.
Die Kernprinzipien der Strategie bestehen darin, dass der Z-Score verwendet wird, um die Position der aktuellen Rendite in Bezug auf die historische Rendite-Verteilung zu messen. Die Berechnungsformel für den Z-Score lautet: ((aktuelle Rendite - historische Rendite-Mittelwert) / historische Rendite-Standarddifferenz. Je höher der Z-Score, desto größer ist die Wahrscheinlichkeit, dass die aktuelle Rendite über die Extreme hinausgeht und überkauft wird; Je niedriger der Z-Score, desto größer ist die Wahrscheinlichkeit, dass die aktuelle Rendite über die Extreme hinausgeht und überkauft wird.
Die Hybrid Binary Z-Score Quantifizierungsstrategie ist eine Quantifizierungsstrategie, die auf statistischen Prinzipien basiert, um potenzielle Überkauf-Überverkaufsmöglichkeiten zu identifizieren, indem sie die aktuelle Rendite mit der historischen Renditeverteilung vergleicht. Die Strategie verwendet gleichzeitig die Bollinger Bands-Indikatoren zur Zweitbestätigung und erhöht die Signalsicherheit. Die Strategie-Regeln sind klar, leicht umzusetzen und zu optimieren, aber es gibt auch Herausforderungen wie Parameter-Sensitivität, Trendrisiko, Überpassungrisiko.
/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Estratégia Híbrida Quantitativa", overlay=true)
// Definição de parâmetros
sma_length = input.int(20, title="Período da SMA")
threshold_high = input.float(1.5, title="Threshold Alto")
threshold_low = input.float(-1.5, title="Threshold Baixo")
lookback_period = input.int(252, title="Período de Retorno Histórico (dias)")
// Funções auxiliares
f_sma(source, length) =>
ta.sma(source, length)
f_bollinger_band(source, length, mult) =>
basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
[basis + dev, basis - dev]
// Cálculo dos indicadores
sma = f_sma(close, sma_length)
[upper_band, lower_band] = f_bollinger_band(close, sma_length, 2)
// Regime de Mercado: Binomial
retornos = ta.change(close, 1)
media_retornos = ta.sma(retornos, lookback_period)
desvio_padrao_retornos = ta.stdev(retornos, lookback_period)
// Indicador de Regime: Z-Score
z_score = (retornos - media_retornos) / desvio_padrao_retornos
// Sinal de Compra e Venda
sinal_compra = z_score < threshold_low and close < lower_band
sinal_venda = z_score > threshold_high and close > upper_band
// Execução de Ordem
if (sinal_compra)
strategy.entry("Long", strategy.long)
if (sinal_venda)
strategy.close("Long")
// Plotagem dos Indicadores
plot(sma, title="SMA", color=color.blue)
plot(upper_band, title="Upper Bollinger Band", color=color.red)
plot(lower_band, title="Lower Bollinger Band", color=color.green)
hline(threshold_high, "Threshold Alto", color=color.red, linestyle=hline.style_dashed)
hline(threshold_low, "Threshold Baixo", color=color.green, linestyle=hline.style_dashed)
plot(z_score, title="Z-Score", color=color.purple)