Strategi ini menggunakan pendekatan analisis kuantitatif hibrida, menggabungkan model distribusi binomial dan analisis regresi, untuk mengidentifikasi rezim pasar yang berbeda. Strategi pertama menghitung indikator Simple Moving Average (SMA) dan Bollinger Bands (BB), kemudian menghitung skor Z berdasarkan rata-rata dan standar deviasi pengembalian historis. Ketika skor Z berada di bawah ambang bawah dan harga berada di bawah band bawah, strategi memasuki posisi panjang; ketika skor Z berada di atas ambang atas dan harga berada di atas band atas, strategi menutup posisi.
Prinsip inti dari strategi ini adalah menggunakan Z-score untuk mengukur posisi pengembalian saat ini relatif terhadap distribusi pengembalian historis. Rumus untuk menghitung Z-score adalah: (Current Return - Historical Return Mean) / Historical Return Standard Deviation. Z-score yang lebih tinggi menunjukkan bahwa pengembalian saat ini lebih ekstrim dan kemungkinan overbought lebih tinggi; Z-score yang lebih rendah menunjukkan bahwa pengembalian saat ini lebih ekstrim dan kemungkinan oversold lebih tinggi. Pada saat yang sama, strategi ini juga menggabungkan indikator Bollinger Bands, menggunakan price breakouts di atas atau di bawah kedua band sebagai konfirmasi sekunder. Strategi ini menghasilkan sinyal perdagangan hanya ketika Z-score dan Bollinger Bands secara bersamaan memenuhi kondisi palsu. Kombinasi ini dapat secara efektif mengurangi kejadian sinyal.
Strategi Kuantitatif Z-Score Binomial Hybrid adalah strategi perdagangan kuantitatif berdasarkan prinsip statistik, mengidentifikasi peluang overbought dan oversold potensial dengan membandingkan pengembalian saat ini dengan distribusi pengembalian historis. Selain itu, strategi ini menggunakan indikator Bollinger Bands untuk konfirmasi sekunder, meningkatkan keandalan sinyal. Aturan strategi jelas dan mudah diterapkan dan dioptimalkan, tetapi juga menghadapi tantangan seperti sensitivitas parameter, risiko tren, risiko overfit, dll. Di masa depan, strategi dapat dioptimalkan dalam hal parameter dinamis, penyaringan tren, optimasi portofolio, mekanisme stop-loss dan take-profit, dll., untuk meningkatkan kemampuan beradaptasi dan ketahanan. Secara keseluruhan, strategi ini memberikan pendekatan sederhana namun efektif untuk perdagangan kuantitatif lebih lanjut, layak dieksplorasi dan disempurnakan.
/*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)