Esta estrategia es un sistema de negociación cuantitativo que combina métodos estadísticos Z-Score, índice de fuerza relativa (RSI) e indicadores de súper tendencia. La estrategia supervisa las desviaciones de precios estadísticos, combina indicadores de impulso y confirmación de tendencia para identificar oportunidades comerciales de alta probabilidad en el mercado. Esta estrategia no solo captura oportunidades de sobrecompra y sobreventa del mercado, sino que también filtra señales falsas a través de la confirmación de tendencia, lo que permite el comercio bidireccional.
La lógica central de la estrategia se basa en la sinergia de tres indicadores técnicos principales: primero, calcula la puntuación Z de los precios para medir la desviación del precio actual de su media histórica, utilizando un promedio móvil de 75 períodos y una desviación estándar. Cuando la puntuación Z excede 1.1 o cae por debajo de -1.1, indica una desviación estadística significativa. En segundo lugar, el indicador RSI se introduce como confirmación de impulso, lo que requiere que el RSI se alinee con la dirección (RSI>60 para posiciones largas, RSI<40 para posiciones cortas). Finalmente, el indicador Supertrend sirve como un filtro de tendencia, calculado sobre la base de un ATR de 11 períodos y un factor multiplicador de 2.0.
Esta es una estrategia de negociación cuantitativa que combina métodos estadísticos y análisis técnico, utilizando múltiples confirmaciones de señales para mejorar la confiabilidad de la negociación. Las principales ventajas de la estrategia se encuentran en su modelo matemático objetivo y mecanismos integrales de control de riesgos, mientras que se debe prestar atención a la optimización de parámetros y la adaptabilidad del mercado. A través de las direcciones de optimización sugeridas, hay espacio para una mayor mejora, especialmente en la adaptación dinámica a los entornos del mercado y el control de riesgos. Esta estrategia es adecuada para mercados con alta volatilidad y tendencias claras, por lo que es una consideración digna para los operadores cuantitativos que buscan rendimientos constantes.
/*backtest start: 2024-01-01 00:00:00 end: 2024-11-26 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Z-Score Long and Short Strategy with Supertrend", overlay=true) // Inputs for Z-Score len = input.int(75, "Z-Score Lookback Length") z_long_threshold = 1.1 // Threshold for Z-Score to open long z_short_threshold = -1.1 // Threshold for Z-Score to open short // Z-Score Calculation z = (close - ta.sma(close, len)) / ta.stdev(close, len) // Calculate Driver RSI driver_rsi_length = input.int(14, "Driver RSI Length") // Input for RSI Length driver_rsi = ta.rsi(close, driver_rsi_length) // Calculate the RSI // Supertrend Parameters atrPeriod = input.int(11, "ATR Length", minval=1) factor = input.float(2.0, "Factor", minval=0.01, step=0.01) // Supertrend Calculation [supertrend, direction] = ta.supertrend(factor, atrPeriod) // Conditions for Long and Short based on Z-Score z_exceeds_long = z >= z_long_threshold and driver_rsi > 60 z_exceeds_short = z <= z_short_threshold and driver_rsi < 40 // Entry Conditions if (z_exceeds_long and direction < 0) // Enter Long if Z-Score exceeds threshold and Supertrend is down strategy.entry("Long", strategy.long) label.new(bar_index, low, text="Open Long", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small) alert("Open Long", alert.freq_once_per_bar) // Alert for Long entry if (z_exceeds_short and direction > 0) // Enter Short if Z-Score exceeds threshold and Supertrend is up strategy.entry("Short", strategy.short) label.new(bar_index, high, text="Open Short", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small) alert("Open Short", alert.freq_once_per_bar) // Alert for Short entry // Plot Supertrend upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color=color.green, style=plot.style_linebr) downTrend = plot(direction > 0 ? supertrend : na, "Down Trend", color=color.red, style=plot.style_linebr) fill(upTrend, downTrend, color=color.new(color.green, 90), fillgaps=false) // Alert conditions for Supertrend changes (optional) alertcondition(direction[1] > direction, title='Downtrend to Uptrend', message='The Supertrend value switched from Downtrend to Uptrend') alertcondition(direction[1] < direction, title='Uptrend to Downtrend', message='The Supertrend value switched from Uptrend to Downtrend')