Estrategia de negociación combinada de múltiples indicadores

El autor:¿ Qué pasa?, Fecha: 2023-09-13 12:18:05
Las etiquetas:

Esta estrategia combina múltiples indicadores técnicos como promedios móviles, RSI y Estocásticos para evaluar la tendencia de precios y los niveles de sobrecompra / sobreventa para las señales comerciales.

Estrategia lógica:

  1. Utilice múltiples EMA para determinar la tendencia general de los precios.

  2. Calcular el RSI y el Estocástico para los niveles de sobrecompra/sobreventa.

  3. Entrar a largo cuando las EMA dan señal alcista, el RSI no está sobrecomprado y el Stoch no está sobrecomprado.

  4. Entrar en corto cuando las EMA dan señal de bajista, el RSI no está sobrevendido y el Stoch no está sobrevendido.

  5. Salida cuando cualquier indicador dé la señal opuesta.

Ventajas:

  1. La verificación de múltiples indicadores mejora la precisión.

  2. Los indicadores se complementan para una mejor evaluación del mercado.

  3. Las reglas comerciales claras facilitan las pruebas de retroceso y la ejecución.

Riesgos:

  1. Evitar la redundancia excesiva entre los indicadores.

  2. Optimización compleja de múltiples indicadores.

  3. Más indicadores no mejoran necesariamente el rendimiento.

En resumen, el enfoque de múltiples indicadores puede mejorar las decisiones hasta cierto punto, pero requiere equilibrar la dificultad de optimización y la redundancia para estrategias simples y confiables.


/*backtest
start: 2022-09-06 00:00:00
end: 2023-09-12 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// 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 = ta.ema(close, 5)
ema13 = ta.ema(close, 9)
ema21 = ta.ema(close, 13)
ema34 = ta.ema(close, 21)
ema55 = ta.ema(close, 34)

plot(ema8, color=color.new(color.red, 0), style=plot.style_line, title='5', linewidth=1)
plot(ema13, color=color.new(color.orange, 0), style=plot.style_line, title='9', linewidth=1)
plot(ema21, color=color.new(color.yellow, 0), style=plot.style_line, title='13', linewidth=1)
plot(ema34, color=color.new(color.aqua, 0), style=plot.style_line, title='21', linewidth=1)
plot(ema55, color=color.new(color.lime, 0), style=plot.style_line, title='34', 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 = ta.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 = ta.stoch(close, high, low, 14)
dSlow = ta.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")



Más.