Strategi ini menggunakan indikator regresi linier dan volatilitas untuk mengidentifikasi berbagai keadaan pasar. Ketika kondisi untuk membeli atau menjual terpenuhi, strategi menetapkan posisi panjang atau pendek yang sesuai. Selain itu, strategi ini memungkinkan optimasi dan penyesuaian parameter berdasarkan kondisi pasar untuk beradaptasi dengan berbagai lingkungan pasar. Strategi ini juga menggunakan rata-rata bergerak eksponensial (EMA) sebagai indikator tambahan untuk mengkonfirmasi sinyal perdagangan.
Strategi ini mengidentifikasi keadaan pasar menggunakan indikator regresi linier dan volatilitas, dengan EMA sebagai indikator konfirmasi, membangun strategi perdagangan yang adaptif dan logis jelas. Keuntungan strategi ini terletak pada menggabungkan tren dan volatilitas sambil memungkinkan optimasi parameter, membuatnya cocok untuk berbagai lingkungan pasar. Namun, strategi ini juga menghadapi risiko seperti pemilihan parameter, pasar bergolak, dan peristiwa angsa hitam, yang membutuhkan optimasi dan peningkatan terus menerus dalam aplikasi praktis. Peningkatan di masa depan dapat berfokus pada memperkaya sumber sinyal, mengoptimalkan pemilihan parameter, dan menyempurnakan langkah-langkah pengendalian risiko untuk meningkatkan stabilitas dan profitabilitas strategi.
/*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"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © tmalvao //@version=5 strategy("Regime de Mercado com Regressão e Volatilidade Otimizado", overlay=true) // Parâmetros para otimização upperThreshold = input.float(1.0, title="Upper Threshold") lowerThreshold = input.float(-1.0, title="Lower Threshold") length = input.int(50, title="Length", minval=1) // Indicadores de volatilidade atrLength = input.int(14, title="ATR Length") atrMult = input.float(2.0, title="ATR Multiplier") atr = ta.atr(atrLength) volatility = atr * atrMult // Calculando a regressão linear usando função incorporada intercept = ta.linreg(close, length, 0) slope = ta.linreg(close, length, 1) - ta.linreg(close, length, 0) // Sinal de compra e venda buySignal = slope > upperThreshold and close > intercept + volatility sellSignal = slope < lowerThreshold and close < intercept - volatility // Entrando e saindo das posições if (buySignal) strategy.entry("Buy", strategy.long) if (sellSignal) strategy.entry("Sell", strategy.short) // Indicadores adicionais para confirmação emaFastLength = input.int(10, title="EMA Fast Length") emaSlowLength = input.int(50, title="EMA Slow Length") emaFast = ta.ema(close, emaFastLength) emaSlow = ta.ema(close, emaSlowLength) // Confirmando sinais com EMAs if (buySignal and emaFast > emaSlow) strategy.entry("Buy Confirmed", strategy.long) if (sellSignal and emaFast < emaSlow) strategy.entry("Sell Confirmed", strategy.short) // Exibindo informações no gráfico plot(slope, title="Slope", color=color.blue) plot(intercept, title="Intercept", color=color.red) plot(volatility, title="Volatility", color=color.green) hline(upperThreshold, "Upper Threshold", color=color.green, linestyle=hline.style_dotted) hline(lowerThreshold, "Lower Threshold", color=color.red, linestyle=hline.style_dotted)