Estrategia de negociación con medias móviles variables (VMA)


Fecha de creación: 2024-02-21 11:47:43 Última modificación: 2024-02-21 11:47:43
Copiar: 2 Número de Visitas: 828
1
Seguir
1617
Seguidores

Estrategia de negociación con medias móviles variables (VMA)

Descripción general

La estrategia de Trading VMA es una estrategia de trading cuantitativa basada en promedios móviles variables. La estrategia utiliza promedios móviles cambiantes para capturar las tendencias del mercado y generar señales de trading.

Principio de estrategia

El núcleo de la estrategia de Trading VMA es calcular un promedio móvil de longitud variable. El promedio móvil es un indicador técnico muy conocido que calcula el precio promedio en un período determinado.

Concretamente, la estrategia primero calcula una serie de mediadores, como el indicador de movimiento de la dirección de los precios (PDM, MDIM) y los datos procesados suavemente (PDMs, MDMs). Estos datos finalmente se utilizan para obtener la fuerza del indicador (iS), que refleja la intensidad de las fluctuaciones de los precios.

Luego, la estrategia de TradingVMA ajusta dinámicamente la longitud de las medias móviles en función de la fuerza del indicador. Cuando la volatilidad del mercado aumenta, los ciclos de las medias móviles se acortan y, a la inversa, se alargan.

Finalmente, la estrategia compara el precio actual con el tamaño de la VMA, generando una señal de negociación. Hacer más cuando el precio es más alto que la VMA y hacer menos cuando el precio es más bajo que la VMA.

Análisis de las ventajas

La estrategia de Trading VMA tiene las siguientes ventajas principales:

  1. Ciclo Variable Filters Noise Más estable - El ciclo del promedio móvil variable se ajusta a los cambios en el mercado para filtrar el ruido de las ondas y obtener una señal de tendencia más estable.

  2. Respuesta rápida a los cambios de precio Improves Responsiveness - Los promedios móviles cambiantes pueden responder rápidamente a los cambios de precio, capturando los puntos de inflexión de las nuevas tendencias.

  3. Reducción de la frecuencia de las operaciones Reduce Overtrading - Comparado con los indicadores de ciclo fijo, TradingVMA puede reducir la cantidad de operaciones innecesarias.

  4. Parámetros Flexibles - Esta política permite a los usuarios seleccionar los parámetros de acuerdo a sus propias preferencias y adaptarse a diferentes entornos de mercado.

Análisis de riesgos

Las estrategias de Trading VMA también presentan los siguientes riesgos principales:

  1. Miss Rapid Reversals - Cuando las tendencias se revierten rápidamente, las medias móviles de ajuste continuo pueden tardar en reaccionar.

  2. Influenciado por la desviación de seguimiento Lagging Bias - Todas las estrategias de promedio móvil tienen un cierto grado de desviación de seguimiento.

  3. Errores en las señales falsas - En un mercado de ordenamiento horizontal, TradingVMA puede generar señales falsas.

  4. Dificultad de optimización de parámetros - Encontrar la combinación óptima de parámetros puede ser más difícil.

Estos riesgos pueden ser controlados por medio de paros, ajustes de la combinación de parámetros, etc.

Dirección de optimización

La estrategia de Trading VMA también puede ser optimizada en las siguientes direcciones:

  1. Combine Other Indicators - El uso de combinaciones de indicadores con otros indicadores de tendencia, como la inversión de tendencia, puede mejorar la calidad de la señal.

  2. Parameter Optimization - para encontrar la mejor combinación de parámetros a través de la retroalimentación histórica y la optimización de parámetros.

  3. Las reglas de negociación adaptativas (Adaptive Trading Rules) son reglas de apertura de posiciones, de detención de pérdidas y otras reglas que se aplican en diferentes circunstancias del mercado.

  4. Sistematización de operaciones algorítmicas - Sistematizar y sistematizar las estrategias para facilitar la optimización de la retroalimentación.

Resumir

El Trading VMA es una estrategia cuantitativa que se adapta a sí misma. Utiliza indicadores VMA especialmente diseñados para capturar las tendencias del mercado y tiene la ventaja de responder rápidamente y filtrar el ruido. La estrategia puede optimizarse de varias maneras para obtener un mejor rendimiento.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © laptevmaxim92

//@version=4
strategy("Variable Moving Average Strategy", overlay=true)

src=close
l =input(5, title="VMA Length") 
std=input(true, title="Show Trend Direction Colors")

utp = input(false, "Use take profit?")
pr = input(100, "Take profit pips")
usl = input(false, "Use stop loss?")
sl = input(100, "Stop loss pips")
fromday = input(01, defval=01, minval=01, maxval=31, title="From Day")
frommonth = input(01, defval=01, minval= 01, maxval=12, title="From Month")
fromyear = input(2000, minval=1900, maxval=2100, title="From Year")
today = input(31, defval=01, minval=01, maxval=31, title="To Day")
tomonth = input(12, defval=12, minval=01, maxval=12, title="To Month")
toyear = input(2019, minval=1900, maxval=2100, title="To Year")

use_date = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))

k = 1.0/l
pdm = 0.0
pdm := max((src - src[1]), 0)
mdm = 0.0
mdm := max((src[1] - src), 0)
pdmS = 0.0
pdmS := ((1 - k)*nz(pdmS[1]) + k*pdm)
mdmS = 0.0
mdmS := ((1 - k)*nz(mdmS[1]) + k*mdm)
s = pdmS + mdmS
pdi = pdmS/s
mdi = mdmS/s
pdiS = 0.0
pdiS := ((1 - k)*nz(pdiS[1]) + k*pdi)
mdiS = 0.0
mdiS := ((1 - k)*nz(mdiS[1]) + k*mdi)
d = abs(pdiS - mdiS)
s1 = pdiS + mdiS
iS = 0.0
iS := ((1 - k)*nz(iS[1]) + k*d/s1)
hhv = highest(iS, l) 
llv = lowest(iS, l) 
d1 = hhv - llv
vI = (iS - llv)/d1
vma = 0.0
vma := (1 - k*vI)*nz(vma[1]) + k*vI*src
vmaC=(vma > vma[1]) ? color.lime : (vma<vma[1]) ? color.red : (vma==vma[1]) ? color.yellow : na 
plot(vma, color=std?vmaC:color.white, linewidth=3, title="VMA")

longCondition = vma > vma[1]
if (longCondition)
    strategy.entry("BUY", strategy.long and use_date)

shortCondition = vma < vma[1]
if (shortCondition)
    strategy.entry("SELL", strategy.short and use_date)

if (utp and not usl)
    strategy.exit("TP", "BUY", profit = pr)
    strategy.exit("TP", "SELL", profit = pr)
    
if (usl and not utp)
    strategy.exit("SL", "BUY", loss = sl)
    strategy.exit("SL", "SELL", loss = sl)
    
if (usl and utp)
    strategy.exit("TP/SL", "BUY", loss = sl, profit = pr)
    strategy.exit("TP/SL", "SELL", loss = sl, profit = pr)