Una estrategia de comercio cuantitativa multifactorial que considera integralmente el factor de línea uniforme y el factor de indicador de oscilación para controlar el riesgo y mejorar la estabilidad. Este artículo describirá en detalle los principios, las ventajas y los riesgos posibles de esta estrategia de comercio.
La estrategia se compone de tres módulos principales:
El filtro de tendencia se construye utilizando las medias de EMA de 5 períodos diferentes (8, 13, 21, 34 y 55 días). Las medias se alinean de corto a largo y solo tienen características de tendencia y generan señales de negociación cuando atraviesan la media de corto período sobre la media de largo período.
La combinación de RSI y Stochastic, los dos indicadores de oscilación más importantes, permite la verificación de brechas y evita la generación de falsas brechas en mercados convulsionados.
El RSI tiene un parámetro de 14, cuando el RSI cumple con la condición de hacer más cuando está en el rango de 40-70, y cumple con la condición de hacer menos cuando está en el rango de 30-60.
Los parámetros estocásticos son: [14,3,3], cuando la línea K cumple con la condición de hacer más en el intervalo 20-80, y con la condición de hacer menos en el intervalo 5-95.
La señal de entrada se activa solo cuando el factor de la línea media y el factor del indicador de la oscilación cumplen al mismo tiempo; la señal de salida se genera cuando cualquiera de los factores ya no cumple.
Toda la estrategia utiliza un riguroso mecanismo de filtrado multifactorial, que asegura la estabilidad y fiabilidad de las señales de negociación al tiempo que mantiene una alta tasa de ganancia.
Esta estrategia combina con éxito las ventajas del seguimiento de tendencias y el comercio inverso, el modelo multifactorial controla el riesgo de manera efectiva y puede obtener ganancias adicionales estables. Es un modelo de estrategia de comercio cuantitativo muy práctico que merece una investigación y aplicación en profundidad por parte de la comunidad de inteligencia artificial.
/*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")