En la carga de los recursos... Cargando...

TradingVMA Estrategia de negociación de medias móviles variables

El autor:¿ Qué pasa?, Fecha: 2024-02-21 11:47:43
Las etiquetas:

img

Resumen general

La estrategia TradingVMA es una estrategia de negociación cuantitativa basada en líneas de promedio móvil variable. Utiliza promedios móviles cambiantes para capturar las tendencias del mercado y generar señales comerciales en consecuencia.

Estrategia lógica

El núcleo de la estrategia TradingVMA es el cálculo de promedios móviles de longitud variable (Variable Moving Average, VMA).

Específicamente, la estrategia primero calcula una serie de cantidades intermedias, como el indicador de movimiento direccional de precios (PDM, MDIM), datos suavizados (PDM, MDM). Estos datos se utilizan finalmente para obtener la fuerza del indicador (iS). Este indicador refleja la intensidad de las fluctuaciones de precios.

Luego, la estrategia TradingVMA ajusta dinámicamente el período de promedio móvil en función de la fuerza del indicador. Cuando aumenta la volatilidad del mercado, el período de promedio móvil se vuelve más corto, y viceversa. Esto permite una respuesta más rápida a los cambios del mercado.

Por último, la estrategia compara el precio actual con el VMA para generar señales de negociación.

Análisis de ventajas

La estrategia de TradingVMA tiene las siguientes ventajas principales:

  1. Los periodos variables filtran el ruido con mayor estabilidad El período de la media móvil variable se adapta a los cambios del mercado para filtrar el ruido y señales de tendencia más estables.

  2. Una respuesta más rápida a los cambios de precios mejora la capacidad de respuesta La media móvil variable puede responder rápidamente a los cambios de precios y capturar los puntos de inversión de tendencia.

  3. Reducción de la frecuencia de las operaciones y reducción de las operaciones excesivas - En comparación con los indicadores de período fijo, TradingVMA puede reducir las operaciones innecesarias.

  4. Flexibilidad de parámetros personalizables: la estrategia permite a los usuarios seleccionar parámetros basados en sus preferencias para adaptarse a diferentes entornos de mercado.

Análisis de riesgos

La estrategia de TradingVMA también presenta los siguientes riesgos principales:

  1. Cuando las tendencias se invierten rápidamente, la media móvil de ajuste continuo puede retrasarse en responder.

  2. Bias de retraso Todas las estrategias de promedios móviles tienen algún grado de sesgo de retraso, ya sea largo o corto.

  3. Las señales incorrectas TradingVMA pueden generar señales largas/cortas incorrectas en los mercados laterales de rango.

  4. Difícil optimización de parámetros Encontrar la combinación óptima de parámetros puede ser un reto.

Estos riesgos pueden controlarse mediante métodos como las pérdidas de parada, el ajuste de combinaciones de parámetros, etc.

Direcciones de optimización

La estrategia de TradingVMA también puede mejorarse en los siguientes aspectos:

  1. Combinar otros indicadores Usando con otros indicadores de tendencia, los indicadores de contratrend pueden mejorar la calidad de la señal.

  2. Optimización de parámetros Descubre los parámetros óptimos a través de backtesting y optimización.

  3. Reglas de negociación adaptativas Emplear diferentes reglas de entrada, detener las pérdidas por régimen de mercado.

  4. Sistemización Algoritmice y sistematice la estrategia para una optimización más fácil.

Conclusión

TradingVMA es una estrategia cuantitativa adaptativa. Captura las tendencias del mercado utilizando un indicador VMA especialmente diseñado, con la ventaja de ser sensible y filtrar el ruido. La estrategia se puede actualizar de múltiples maneras para un mejor rendimiento.


/*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)

Más.