Estrategia de cruce de dos medias móviles

El autor:¿ Qué pasa?, Fecha: 2023-12-01 18:18:16
Las etiquetas:

img

Resumen general

Esta estrategia se basa en el sistema dual de seguimiento de tendencias de cruce de promedios móviles, que combina promedios móviles simples rápidos (SMA) y promedios móviles ponderados lentos (VWMA) y genera señales comerciales cuando las dos líneas se cruzan.

Cuando el SMA rápido cruza por encima del VWMA lento, se genera una señal de compra. Cuando el SMA rápido cruza por debajo del VWMA lento, se genera una señal de venta. La estrategia también emplea un mecanismo de stop loss para controlar los riesgos.

Estrategia lógica

La lógica central de esta estrategia radica en el sistema dual de cruce de medias móviles, que utiliza los siguientes indicadores técnicos:

  1. En el caso de los instrumentos financieros, el valor de los activos financieros es el valor de los activos financieros.
  2. Promedio móvil ponderado (VWMA): promedio ponderado de los precios de cierre durante los últimos n días, asignando mayores ponderaciones a los precios más recientes, respondiendo más rápidamente a los cambios de precios.

La SMA rápida tiene un período de retroceso más corto para reaccionar rápidamente a los cambios de precios, mientras que la VWMA lenta tiene un período de retroceso más largo para suavizar.

La estrategia también establece mecanismos de stop loss, que reducen las pérdidas en el tiempo cuando el precio se mueve en direcciones desfavorables.

Análisis de ventajas

  1. Responde rápidamente a los cambios de tendencia del mercado
  2. Un buen control de la extracción con mecanismos eficaces de detención de pérdidas
  3. Simple e intuitivo, fácil de entender e implementar
  4. Parámetros optimizables en diferentes entornos de mercado

Análisis de riesgos

  1. Las estrategias de doble MA tienden a dar señales falsas en los mercados alcistas
  2. El ajuste inadecuado de los parámetros podría provocar pérdidas.
  3. Los accidentes ocasionales pueden causar pérdidas.

Gestión de riesgos:

  1. Utilice indicadores de filtración de tendencias para confirmar
  2. Optimiza las configuraciones de parámetros
  3. Adoptar una estrategia de stop loss para controlar razonablemente las pérdidas individuales

Direcciones de optimización

La estrategia puede mejorarse en los siguientes aspectos:

  1. Incorporar otros indicadores como RSI, Bandas de Bollinger para aumentar la precisión de la señal
  2. Optimizar la longitud de las medias móviles a través de los ciclos
  3. Combinar indicadores de volumen, operaciones en puntos con flujos de capital significativos
  4. Ajustar los parámetros basados en los resultados de backtest para encontrar óptimo
  5. Se utilizará un stop loss dinámico, ajustando los stops en función de la volatilidad del mercado

Conclusión

En conclusión, esta es una estrategia muy práctica de seguimiento de tendencias. Utiliza cruces de promedios móviles duales intuitivos para generar señales de negociación, capturando los cambios de tendencia de manera efectiva con la coordinación de promedios móviles rápidos y lentos. El mecanismo de stop loss también garantiza un buen control de riesgos. Con indicadores complementarios y optimización de parámetros, la estrategia puede lograr un rendimiento comercial aún mejor.


/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-28 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//strategy(title="Bitlinc Entry v0.1 VWMA / SMA / MRSI SQQQ 94M", overlay=true, initial_capital=10000, currency='USD')

strategy(title="Bitlinc Entry v0.1 VWMA / SMA / MRSI SQQQ 94M", overlay=true)

// Credit goes to this developer for the "Date Range Code"
// https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/

// === GENERAL INPUTS ===
// short ma
maFastSource   = input(defval = close, title = "Simple MA Source")
maFastLength   = input(defval = 6, title = "Simple MA Length", minval = 1)
// long ma
maSlowSource   = input(defval = high, title = "VW MA Source")
maSlowLength   = input(defval = 7, title = "VW MA Period", minval = 1)


// === SERIES SETUP ===
// a couple of ma's...
maFast = sma(maFastSource, maFastLength)
maSlow = vwma(maSlowSource, maSlowLength)


// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = color.green, linewidth = 2, style = plot.style_line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = color.red, linewidth = 2, style = plot.style_line, transp = 30)

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === LOGIC ===
enterLong = crossover(maFast, maSlow)
exitLong = crossover(maSlow, maFast)
//enterLong = crossover(maSlow, maFast)
//exitLong = crossover(maFast, maSlow)

// Entry //
strategy.entry(id="Long Entry", long=true, when=window() and enterLong)
strategy.entry(id="Short Entry", long=false, when=window() and exitLong)

// === FILL ====
fill(fast, slow, color = maFast > maSlow ? color.green : color.red)

// === MRSI ===
//
//

basis = rsi(close, input(50))

ma1 = ema(basis, input(2))
ma2 = ema(basis, input(27))

oversold = input(32.6)
overbought = input(63)

//plot(ma1, title="RSI EMA1", color=blue)
//plot(ma2, title="RSI EMA2", color=yellow)

obhist = ma1 >= overbought ? ma1 : overbought
oshist = ma1 <= oversold ? ma1 : oversold

//plot(obhist, title="Overbought Highligth", style=columns, color=color.maroon, histbase=overbought)
//plot(oshist, title="Oversold Highligth", style=columns, color=color.yellow, histbase=oversold)

//i1 = hline(oversold, title="Oversold Level", color=white)
//i2 = hline(overbought, title="Overbought Level", color=white)

//fill(i1, i2, color=olive, transp=100)

// === LOGIC ===
enterLongMrsi = crossover(ma1, oversold)
exitLongMrsi = crossover(ma1, overbought)

// Entry //
strategy.entry(id="MRSI Long Entry", long=true, when=window() and enterLongMrsi)
strategy.entry(id="MRSI Short Entry", long=false, when=window() and exitLongMrsi)

//hline(50, title="50 Level", color=white)

Más.