Sres. foristas.
Os paso el código de 2 indicadores que he diseñado y que estoy utilizando para calcular el lag de una media móvil.
El 1r indicador lo he llamado MAV, que es el acrónimo de "Mobile Average Volatility", "Volatilidad de la media móvil".
Este indicador lo he creado para simplificar el algoritmo del 2º indicador, que lo he llamado Lag.
Código: Seleccionar todo
//MAV Mobile Average Volatility (Volatilidad de la media móvil)
//Programado por Rafa7, forista de x-trader.net
//parámetros:
// tipo = 0, 1, 2 (SMA, EMA, WMA)
// n = periodos, número entero
// lag = número de velas de retraso del precio
//MAV retorna la volatilidad histórica de la media móvil respecto al precio retrasado lag velas
if tipo = 0 then
mm = average[n](customclose)
elsif tipo = 1 then
mm = exponentialAverage[n](customclose)
else
mm = weightedAverage[n](customclose)
endif
i = i + 1
if i > n then
suma = suma + abs(log(mm / customclose[lag]))
media = 100 * (suma / i)
endif
RETURN media as "Mobile Average Volatility"
Código: Seleccionar todo
//Lag Candles - Velas de retraso
//Programado por Rafa7, forista de x-trader.net
//parámetros:
// tipo = 0, 1, 2 (SMA, EMA, WMA)
// n = periodos, número entero
y1 = CALL MAV[tipo, n, 0](customclose)
y2 = CALL MAV[tipo, n, 1](customclose)
y3 = CALL MAV[tipo, n, 2](customclose)
x3 = 2
while y1 > y2 and y2 > y3 do
x3 = x3 + 1
y1 = y2
y2 = y3
y3 = CALL MAV[tipo, n, x3](customclose)
wend
x2 = x3 - 1
x1 = x2 - 1
if y3 <> 2 * y2 - y1 then
lag = - (square(x3) * (y1 - y2) + square(x2) * (y3 - y1) + square(x1) * (y2 - y3)) / (2 * ((x3 * (y2 - y1) + x2 * (y1 - y3) + x1 * (y3 - y2))))
else
lag = x1
endif
return lag as "Lag Candles"
Y os paso algunos resultados de la medición, en timeframe diario, de los lags en número de velas:
Código: Seleccionar todo
activo lag(SMA(10)) lag(EMA(10)) lag(WMA(10))
Ibex35 4,56 2,98 2,57
SP500 4,53 2,87 2,52
EURUSD 4,5 3,05 2,57
XAUUSD 4,48 2,89 2,48
Como podéis ver, el lag empírico de la SMA(10) es, aproximadamente, de 4,5 velas, o sea, que coincide con su lag teórico.
En cambio el lag empírico de la EMA(10) es, aproximadamente, de 3 velas, o sea, que no coincide con su lag teórico (4,5 velas).
No sé cual es el lag teórico de la WMA(10) (aún no lo he calculado), pero al menos veo que los resultados de las mediciones empíricas son muy parecidas: 2,5 velas.
Lo que no sé es como interpretar porque la EMA(10) tiene un lag empírico diferente a su teórico. Suponiendo que mi demostración de que la EMA(n) (estándar) tiene el mismo lag que la SMA(n), sea correcta, y que mis mediciones de lag lo haga de forma correcta, solo se me ocurre que la causa de la diferencia es que en los períodos de tendencia, el lag de la EMA se acorta respecto a su lag teórico.
Saludos.