
La stratégie utilise une méthode d’analyse quantitative mixte, combinant deux modèles de distribution et une analyse de régression, pour identifier les différents états du marché. La stratégie calcule d’abord les moyennes mobiles simples (SMA) et les bandes de Bryn (BB) et calcule ensuite un score Z basé sur les moyennes et les écarts standards des rendements historiques.
Le principe central de cette stratégie est d’utiliser le score Z pour mesurer la position du rendement actuel par rapport à la distribution du rendement historique. La formule de calcul du score Z est: ((Rendement actuel - rendement historique moyen) / rendement historique standard différentiel. Le score Z le plus élevé indique que le rendement actuel est au-delà de l’extrême et la probabilité d’une survente est plus grande; le score Z le plus bas indique que le rendement actuel est au-delà de l’extrême et la probabilité d’une survente est plus grande.
La stratégie de quantification du score Z bi-hybride est une stratégie de trading quantifié basée sur des principes statistiques qui permet d’identifier les opportunités potentielles de survente et de survente en comparant les rendements actuels avec la distribution des rendements historiques. En même temps, la stratégie utilise l’indicateur des bandes de Bryn pour la double confirmation, ce qui améliore la fiabilité du signal. Les règles de la stratégie sont claires, faciles à mettre en œuvre et à optimiser, mais elles sont également confrontées à des défis tels que la sensibilité aux paramètres, le risque de tendance, le risque de suradaptation.
/*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)