La estrategia de negociación cuantitativa multifactorial que integra factores promedio móvil e indicadores oscilantes para controlar los riesgos y mejorar la estabilidad.
La estrategia consta de tres módulos principales:
Utilizando 5 EMA con diferentes períodos (8, 13, 21, 34, 55) para construir un filtro de tendencia. Los EMA se organizan de corto a largo. Solo cuando la EMA más rápida cruza por encima de la EMA más lenta, se genera la señal de tendencia.
Combinar los osciladores RSI y estocásticos para validar las señales de ruptura, evitando rupturas falsas excesivas en los mercados variados.
RSI (14) genera una señal larga cuando está en el rango de 40-70 y una señal corta cuando está en el rango de 30-60.
El estocástico (14,3,3) da una señal larga cuando la línea K está entre 20-80 y una señal corta cuando la línea K está entre 5-95.
La señal de entrada se activa sólo cuando ambos factores están alineados. La señal de salida se genera cuando uno de los factores ya no es válido.
El estricto filtro multifactor asegura una alta tasa de ganancia y señales confiables.
Esta estrategia combina con éxito los puntos fuertes de las estrategias de seguimiento de tendencias y inversión de operaciones. El modelo de control de riesgos de múltiples factores ofrece un alfa estable. Es una estrategia comercial cuantitativa altamente práctica que merece una investigación y aplicación en profundidad por la comunidad de IA.
/*backtest start: 2022-09-12 00:00:00 end: 2022-11-15 00:00:00 period: 2d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "Combined Strategy", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value = .0020, pyramiding = 0, slippage = 3, overlay = true) //----------// // MOMENTUM // //----------// ema8 = ema(close, 8) ema13 = ema(close, 13) ema21 = ema(close, 21) ema34 = ema(close, 34) ema55 = ema(close, 55) plot(ema8, color=red, style=line, title="8", linewidth=1) plot(ema13, color=orange, style=line, title="13", linewidth=1) plot(ema21, color=yellow, style=line, title="21", linewidth=1) plot(ema34, color=aqua, style=line, title="34", linewidth=1) plot(ema55, color=lime, style=line, title="55", linewidth=1) longEmaCondition = ema8 > ema13 and ema13 > ema21 and ema21 > ema34 and ema34 > ema55 exitLongEmaCondition = ema13 < ema55 shortEmaCondition = ema8 < ema13 and ema13 < ema21 and ema21 < ema34 and ema34 < ema55 exitShortEmaCondition = ema13 > ema55 // ---------- // // OSCILLATORS // // ----------- // rsi = rsi(close, 14) longRsiCondition = rsi < 70 and rsi > 40 exitLongRsiCondition = rsi > 70 shortRsiCondition = rsi > 30 and rsi < 60 exitShortRsiCondition = rsi < 30 // Stochastic length = 14, smoothK = 3, smoothD = 3 kFast = stoch(close, high, low, 14) dSlow = sma(kFast, smoothD) longStochasticCondition = kFast < 80 exitLongStochasticCondition = kFast > 95 shortStochasticCondition = kFast > 20 exitShortStochasticCondition = kFast < 5 //----------// // STRATEGY // //----------// longCondition = longEmaCondition and longRsiCondition and longStochasticCondition and strategy.position_size == 0 exitLongCondition = (exitLongEmaCondition or exitLongRsiCondition or exitLongStochasticCondition) and strategy.position_size > 0 if (longCondition) strategy.entry("LONG", strategy.long) if (exitLongCondition) strategy.close("LONG") shortCondition = shortEmaCondition and shortRsiCondition and shortStochasticCondition and strategy.position_size == 0 exitShortCondition = (exitShortEmaCondition or exitShortRsiCondition or exitShortStochasticCondition) and strategy.position_size < 0 if (shortCondition) strategy.entry("SHORT", strategy.short) if (exitShortCondition) strategy.close("SHORT")