Estrategia de cruce de medias móviles dobles


Fecha de creación: 2023-12-01 18:18:16 Última modificación: 2023-12-01 18:18:16
Copiar: 2 Número de Visitas: 668
1
Seguir
1619
Seguidores

Estrategia de cruce de medias móviles dobles

Descripción general

Esta estrategia es una estrategia de seguimiento de tendencias basada en el cruce de dos medias. Combina una media móvil simple rápida (SMA) y una media móvil ponderada lenta (VWMA), que utiliza el cruce de las dos medias para formar señales de compra y venta.

Cuando el SMA rápido sube a través del VWMA lento, genera una señal de compra; cuando el SMA rápido baja a través del VWMA lento, genera una señal de venta. La estrategia utiliza un mecanismo de control de riesgo de stop loss.

Principio de estrategia

La lógica central de esta estrategia se basa en el sistema de doble recorrido equilíneo. En concreto, utiliza los siguientes indicadores técnicos:

  1. Media móvil simple ((SMA): toma el promedio aritmético de los precios de cierre de los últimos n días, que refleja el precio promedio de los últimos períodos.
  2. Media móvil ponderada ((VWMA): media ponderada de los precios de cierre de los últimos n días, que otorga más peso a los precios recientes y responde más rápidamente a los cambios de precios.

Los parámetros rápidos de SMA en la doble línea media tienen una configuración más corta para responder rápidamente a los cambios en los precios; los parámetros lentos de VWMA son más largos y tienen un efecto de reflujo. Cuando las tendencias a corto y largo plazo se mueven en la misma dirección, el SMA rápido hacia arriba cruza el VWMA lento para generar una señal de compra; cuando cruza hacia abajo, genera una señal de venta.

La estrategia también establece un mecanismo de suspensión de pérdidas. Cuando el precio se mueve en una dirección adversa, se detiene a tiempo para controlar el riesgo.

Análisis de las ventajas

  1. Responder rápidamente a los cambios en las tendencias del mercado
  2. La retirada está controlada y los mecanismos de detención de pérdidas controlan el riesgo
  3. La implementación es sencilla, intuitiva y fácil de entender
  4. Se puede optimizar para adaptarse a diferentes entornos de mercado mediante la adaptación de los parámetros

Análisis de riesgos

  1. Las estrategias de doble línea media son propensas a generar falsas señales en mercados de múltiples cabezas.
  2. La elección de los parámetros adecuados puede resultar en pérdidas
  3. En ocasiones, puede haber dolores de cabeza por los daños ocasionados por eventos repentinos en el Markt.

Los métodos para controlar el riesgo:

  1. Confirmación mediante el uso de indicadores de filtración de tendencias
  2. Ajuste de los parámetros de optimización
  3. Adoptar estrategias de detener las pérdidas y controlar las pérdidas individuales

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Confirmación en combinación con otros indicadores técnicos, como RSI, líneas de Brin, etc., para mejorar la precisión de la señal
  2. Optimización de la longitud de los parámetros de la línea media, ajustando los parámetros en función de los diferentes períodos
  3. Combinación de indicadores de volumen de transacción para realizar transacciones en puntos de entrada y salida de energía masiva
  4. Ajuste de los parámetros de acuerdo con los resultados de la medición y seleccione los parámetros óptimos
  5. Utiliza un stop loss dinámico para ajustar el punto de parada en función de la volatilidad del mercado

Resumir

La estrategia en su conjunto es una estrategia de seguimiento de tendencias muy práctica. Utiliza un simple y intuitivo cruce de doble línea media para generar señales de negociación, y puede capturar eficazmente los cambios en las tendencias del mercado mediante la combinación de la línea media rápida y la línea media lenta. El mecanismo de stop loss también lo hace con un buen control de riesgo.

Código Fuente de la Estrategia
/*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)