Strategi ini menggunakan penunjuk regresi linear dan turun naik untuk mengenal pasti keadaan pasaran yang berbeza. Apabila syarat untuk membeli atau menjual dipenuhi, strategi menetapkan kedudukan panjang atau pendek yang sesuai. Di samping itu, strategi ini membolehkan pengoptimuman parameter dan penyesuaian berdasarkan keadaan pasaran untuk menyesuaikan diri dengan pelbagai persekitaran pasaran. Strategi ini juga menggunakan purata bergerak eksponensial (EMA) sebagai penunjuk tambahan untuk mengesahkan isyarat perdagangan.
Strategi ini mengenal pasti keadaan pasaran menggunakan pengirisan linear dan penunjuk turun naik, dengan EMA sebagai penunjuk pengesahan, membina strategi dagangan yang adaptif dan logiknya jelas. Kelebihan strategi ini terletak pada menggabungkan trend dan turun naik sambil membolehkan pengoptimuman parameter, menjadikannya sesuai untuk pelbagai persekitaran pasaran. Walau bagaimanapun, strategi ini juga menghadapi risiko seperti pemilihan parameter, pasaran bergolak, dan peristiwa angsa hitam, yang memerlukan pengoptimuman dan peningkatan yang berterusan dalam aplikasi praktikal. Peningkatan masa depan boleh memberi tumpuan kepada memperkaya sumber isyarat, mengoptimumkan pemilihan parameter, dan menyempurnakan langkah kawalan risiko untuk meningkatkan kestabilan dan keuntungan 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)