Chiến lược này sử dụng các chỉ số hồi quy tuyến tính và biến động để xác định các trạng thái thị trường khác nhau. Khi các điều kiện mua hoặc bán được đáp ứng, chiến lược thiết lập các vị trí dài hoặc ngắn tương ứng. Ngoài ra, chiến lược cho phép tối ưu hóa và điều chỉnh tham số dựa trên điều kiện thị trường để thích nghi với các môi trường thị trường khác nhau. Chiến lược cũng sử dụng trung bình chuyển động theo cấp số (EMA) làm chỉ số bổ sung để xác nhận tín hiệu giao dịch.
Chiến lược xác định trạng thái thị trường bằng cách sử dụng các chỉ số hồi quy tuyến tính và biến động, với EMA là các chỉ số xác nhận, xây dựng một chiến lược giao dịch thích nghi và rõ ràng. Ưu điểm của chiến lược nằm trong việc kết hợp xu hướng và biến động trong khi cho phép tối ưu hóa tham số, làm cho nó phù hợp với các môi trường thị trường khác nhau. Tuy nhiên, chiến lược cũng phải đối mặt với các rủi ro như lựa chọn tham số, thị trường hỗn loạn và các sự kiện thiên nga đen, đòi hỏi tối ưu hóa và cải tiến liên tục trong các ứng dụng thực tế.
/*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)