Chiến lược này kết hợp hai chỉ số chuyển động trung bình chéo, RSI và stochastic để tìm kiếm các cơ hội giao dịch có khả năng cao trong giao dịch ngắn hạn thông qua việc xác nhận chung nhiều chỉ số kỹ thuật. Chiến lược sử dụng sự chéo của trung bình chuyển động 20 ngày và 50 ngày như tín hiệu giao dịch chính, và kết hợp RSI và chỉ số stochastic như các phán đoán phụ để kiểm tra hai lần các tín hiệu giao dịch. Ngoài ra, chiến lược cũng sử dụng ATR làm cơ sở để dừng lỗ và lấy lợi nhuận, quản lý các vị trí với tỷ lệ rủi ro-lợi nhuận cố định, cố gắng đạt được lợi nhuận ổn định trong khi kiểm soát rủi ro.
Chiến lược này là một chiến lược giao dịch ngắn hạn dựa trên hai đường trung bình động, chỉ số RSI và chỉ số chứng khoán. Nó kiểm soát rủi ro giao dịch trong khi nắm bắt các cơ hội xu hướng thông qua xác nhận chung của nhiều chỉ số kỹ thuật. Lý thuyết chiến lược rõ ràng, các tham số dễ tối ưu hóa và nó phù hợp với các nhà đầu tư tham gia giao dịch ngắn hạn. Tuy nhiên, chiến lược cũng có một số thiếu sót, chẳng hạn như khả năng nắm bắt xu hướng hạn chế và thiếu quản lý năng động các vị trí và vốn. Những vấn đề này có thể được cải thiện bằng cách giới thiệu nhiều chỉ số kỹ thuật hơn, tối ưu hóa tín hiệu và quản lý vị trí, v.v., để tiếp tục nâng cao hiệu suất của chiến lược.
/*backtest start: 2024-05-17 00:00:00 end: 2024-06-16 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Cruce de Medias con Filtros de RSI y Estocástico", overlay=true) // Definir parámetros de las medias móviles fast_length = input(20, title="Periodo de Media Rápida") slow_length = input(50, title="Periodo de Media Lenta") // Calcular medias móviles fast_ma = ta.sma(close, fast_length) slow_ma = ta.sma(close, slow_length) // Añadir filtro RSI rsi_length = input(7, title="Periodo del RSI") rsi = ta.rsi(close, rsi_length) rsi_overbought = input(70, title="RSI Sobrecomprado") rsi_oversold = input(30, title="RSI Sobrevendido") // Añadir filtro Estocástico k_period = input(7, title="K Periodo del Estocástico") d_period = input(3, title="D Periodo del Estocástico") smooth_k = input(3, title="Suavización del Estocástico") stoch_k = ta.sma(ta.stoch(close, high, low, k_period), smooth_k) stoch_d = ta.sma(stoch_k, d_period) stoch_overbought = input(80, title="Estocástico Sobrecomprado") stoch_oversold = input(20, title="Estocástico Sobrevendido") // Definir niveles de stop-loss y take-profit con ratio 2:1 risk = input(1, title="Riesgo en ATR") reward_ratio = input(2, title="Ratio Riesgo/Beneficio") atr_length = input(14, title="Periodo del ATR") atr = ta.atr(atr_length) stop_loss = risk * atr take_profit = reward_ratio * stop_loss // Señal de compra long_condition = ta.crossover(fast_ma, slow_ma) and rsi < rsi_overbought and stoch_k < stoch_overbought if (long_condition) strategy.entry("Compra", strategy.long) // Señal de venta short_condition = ta.crossunder(fast_ma, slow_ma) and rsi > rsi_oversold and stoch_k > stoch_oversold if (short_condition) strategy.entry("Venta", strategy.short) // Configurar Stop-Loss y Take-Profit para posiciones largas if (strategy.position_size > 0) strategy.exit("Take Profit/Stop Loss", from_entry="Compra", stop=low - stop_loss, limit=high + take_profit) // Configurar Stop-Loss y Take-Profit para posiciones cortas if (strategy.position_size < 0) strategy.exit("Take Profit/Stop Loss", from_entry="Venta", stop=high + stop_loss, limit=low - take_profit) // Plotear las medias móviles en el gráfico plot(fast_ma, title="Media Rápida (50)", color=color.blue) plot(slow_ma, title="Media Lenta (200)", color=color.red) // Plotear RSI y Estocástico en subgráficos hline(rsi_overbought, "RSI Sobrecomprado", color=color.red) hline(rsi_oversold, "RSI Sobrevendido", color=color.green) plot(rsi, title="RSI", color=color.orange, linewidth=2) hline(stoch_overbought, "Estocástico Sobrecomprado", color=color.red) hline(stoch_oversold, "Estocástico Sobrevendido", color=color.green) plot(stoch_k, title="Estocástico K", color=color.purple, linewidth=2) plot(stoch_d, title="Estocástico D", color=color.purple, linewidth=1, style=plot.style_stepline)