Esta estrategia integra las técnicas de cruce de promedio móvil y ruptura de nivel de resistencia para configurar señales de compra y venta para el comercio automatizado. Cuando el promedio móvil a corto plazo cruza el promedio móvil a mediano plazo desde abajo y el precio de la acción rompe el nivel de resistencia, se genera una señal de compra. La estrategia establece el take-profit en un aumento del precio del 15% y el stop-loss en un descenso del precio del 3% para controlar los riesgos. Esta estrategia de trading cuantitativa madura puede identificar automáticamente las tendencias del mercado y entrar en posiciones cuando surgen señales técnicas, con una adecuada gestión del riesgo.
La estrategia genera señales comerciales basadas principalmente en los siguientes indicadores técnicos y juicios:
Técnica de cruce de media móvil: se calculan medias móviles simples de 20 y 44 días.
Técnica de ruptura de nivel de resistencia: los niveles de precio que el precio de la acción ha alcanzado repetidamente pero no ha logrado romper se llaman niveles de resistencia. Romperlos indica que el precio está entrando en una nueva tendencia alcista. Esta estrategia considera una ruptura por encima del 0,7% del cierre anterior como una ruptura de resistencia.
Oscilador RSI: Índice de fortaleza relativa, un indicador de impulso para identificar las condiciones de sobrecompra y sobreventa.
Análisis del volumen: el volumen que excede la media de los últimos 10 días a menudo sugiere un mayor interés de compra o venta y un mayor impulso en el movimiento de los precios.
Las señales de compra se activan cuando la SMA corta cruza la SMA media, con un valor RSI sobrecomprado y un volumen de operaciones superior al promedio, lo que indica una tendencia al alza.
Las señales de venta: 15% de ganancia del precio de entrada, 3% de stop-loss.
Esta estrategia de negociación cuantitativa madura integra múltiples métodos de análisis técnico para identificar la estructura y la tendencia del mercado, generando automáticamente señales de negociación durante la formación de tendencias, con una gestión adecuada del riesgo.
Captura las tendencias del mercado sin problemas con la técnica de promedio móvil.
Evitar la apertura de posiciones durante las falsas rupturas mediante la incorporación de análisis de volumen.
Control eficaz del riesgo mediante el establecimiento de stop-loss y take-profit, optimizando la relación riesgo-recompensa.
En general, un excelente juicio sobre la estructura del mercado, reglas de negociación rigurosas y control de riesgos hacen de esta una estrategia de negociación cuantitativa sólida.
Los sistemas de media móvil doble pueden ser sensibles a la regulación de parámetros para diferentes períodos.
Los sistemas de seguimiento de tendencias no pueden responder rápidamente a eventos fundamentales repentinos, enfrentándose a riesgos de stop loss.
Aunque con el stop loss establecido, la alta frecuencia de negociación conduce a un número inevitable de ejecuciones de stop loss, lo que resulta en niveles de ganancia desiguales.
Las señales de los indicadores técnicos a menudo se quedan atrás de los mejores puntos de inversión de los mercados.
Optimice parámetros como las longitudes de media móvil, el objetivo de stop loss / ganancia por métodos de ajuste de parámetros para encontrar lo óptimo.
Añadir otros indicadores técnicos como bandas de Bollinger para la detección de rango, MACD para detectar divergencias, etc. para mejorar la precisión de la señal.
Incorporar señales fundamentales y impulsadas por eventos para evitar el stop loss provocado por noticias negativas.
Optimizar la gestión del dinero mediante métodos de cantidad fija y porcentaje fijo para controlar los riesgos por comercio.
Esta estrategia demuestra operaciones suaves, juicios precisos y reglas de negociación rigurosas, representando una de las técnicas de negociación cuantitativa más efectivas. Pero el análisis técnico por sí solo tiene limitaciones en la lectura de mercados, por lo que las mejoras adicionales se encuentran en la incorporación de más indicadores y señales fundamentales / de eventos, la optimización de los niveles de stop loss / take profit y los mecanismos de gestión de dinero. En resumen, esta estrategia ha alcanzado un alto nivel entre las estrategias de análisis técnico, pero debería dirigirse hacia las estrategias de negociación de ciclos fundamentales / impulsados por eventos en los próximos pasos.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Advanced Strategy with Conditional Stop Loss", overlay=true) // Parameters ma_length_20 = 20 ma_length_44 = 44 ma_length_100 = 100 rsi_length = 14 volume_length = 10 profit_target = 1.15 // 15% above the buy price stop_loss_target = 0.97 // 3% below the buy price wait_candles = 10 // Number of candles to wait after selling, unless MA cross condition met // Indicators moving_average_20 = ta.sma(close, ma_length_20) moving_average_44 = ta.sma(close, ma_length_44) moving_average_100 = ta.sma(close, ma_length_100) rsi = ta.rsi(close, rsi_length) volumeAvg = ta.sma(volume, volume_length) // Variables to manage the wait period after a sell var int last_sell_candle = 0 // Update last sell candle if (strategy.position_size[1] > 0 and strategy.position_size == 0) last_sell_candle := bar_index // Trend identification uptrend = close > moving_average_20 above_ma20_by_1_percent = close > moving_average_20 * 1.01 ma_cross = ta.crossover(moving_average_20, moving_average_44) or ta.crossunder(moving_average_20, moving_average_44) close_near_high = (close >= high * 0.993) and (close <= high) // Buy condition (only in uptrend, above 1% from 20-day MA, and respecting new filter) can_buy_after_cross = ma_cross and close > high[1] can_buy_after_wait = (bar_index - last_sell_candle) > wait_candles buy_condition = (can_buy_after_cross or can_buy_after_wait) and uptrend and above_ma20_by_1_percent and close > moving_average_44 and close > moving_average_100 and close > high[1] and rsi > 50 and volume > volumeAvg and not close_near_high // Entry if (buy_condition and strategy.position_size == 0) strategy.entry("Buy", strategy.long) // Exit conditions if (strategy.position_size > 0) // Profit target profit_level = strategy.position_avg_price * profit_target strategy.exit("Take Profit", "Buy", limit=profit_level) // Dynamic Stop Loss - Check on every bar if the price has dropped 3% below the buy price stop_loss_level = strategy.position_avg_price * stop_loss_target if (low < stop_loss_level) strategy.close("Buy", comment="Stop Loss") // Plotting plot(moving_average_20, color=color.green, title="20-Day Moving Average") plot(moving_average_44, color=color.blue, title="44-Day Moving Average") plot(moving_average_100, color=color.red, title="100-Day Moving Average")