Эта стратегия использует гибридный подход количественного анализа, объединяющий биномиальную модель распределения и регрессионный анализ, для выявления различных рыночных режимов. Стратегия сначала рассчитывает индикаторы простой скользящей средней (SMA) и полосы Боллинджера (BB), затем вычисляет Z-балл на основе среднего и стандартного отклонения исторических доходов. Когда Z-балл ниже нижнего порога, а цена ниже нижней полосы, стратегия входит в длинную позицию; когда Z-балл выше верхнего порога, а цена выше верхней полосы, стратегия закрывает позицию.
Основной принцип этой стратегии состоит в том, чтобы использовать Z-счет для измерения положения текущей доходности относительно распределения исторической доходности. Формула для расчета Z-счета: (Today's Return - Historical Return Mean) / Historical Return Standard Deviation. Более высокий Z-счет указывает на то, что текущая доходность более экстремальна и вероятность перекупки выше; более низкий Z-счет указывает на то, что текущая доходность более экстремальна и вероятность перепродажи выше. В то же время стратегия также включает в себя индикатор Боллингерских полос, используя ценовые прорывы выше или ниже обеих полос в качестве вторичного подтверждения. Стратегия генерирует торговые сигналы только тогда, когда Z-счет и Боллингерские полосы одновременно соответствуют ложным условиям. Эта комбинация может эффективно снизить возникновение сигналов.
Гибридная биномиальная количественная стратегия Z-Score - это количественная стратегия торговли, основанная на статистических принципах, определяющая потенциальные возможности перекупленности и перепродажи путем сравнения текущей доходности с распределением исторической доходности. Кроме того, стратегия использует индикатор Болинджерских полос для вторичного подтверждения, повышая надежность сигнала. Правила стратегии ясны и просты в реализации и оптимизации, но она также сталкивается с такими проблемами, как чувствительность параметров, риск тренда, риск перенапряжения и т. Д. В будущем стратегия может быть оптимизирована с точки зрения динамических параметров, фильтрации тренда, оптимизации портфеля, механизмов стоп-лосса и получения прибыли и т. Д., чтобы улучшить ее адаптируемость и надежность. В целом эта стратегия обеспечивает простой, но эффективный подход к дальнейшей количественной торговле, достойный изучения и уточнения.
/*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)