Type/to search
0
Follow
5
Followers
Análisis de las razones de la inconsistencia entre el indicador MACD TV y FMZ (+ indicador EMA escrito a mano)
FAQ
Created 2021-09-24 16:18:35  
 12
 1454

Hoy he traducido una estrategia de TV, usando el indicador MACD, comparando FMZ y TV, las tendencias son idénticas, pero las diferencias en los valores son un poco grandes, y me he pasado una noche trabajando duro para averiguar la razón:

Los indicadores se pueden encontrar en: TA.MACD, talin.MACD, y en una base de datos de código abierto de la comunidad.
Resultados: Los tres son exactamente iguales.
Pero la MACD no coincide con el gráfico de TV en la página de respuestas.

El MACD es en realidad el indicador EMA calculado más allá, y para simplificar el análisis del problema, he cambiado la comparación con el MACD por la comparación con el EMA.
Pero también encontré inconsistencias, y empecé a sospechar que era el algoritmo de la EMA FMZ y el de la TV.

Después de leer la introducción de TV sobre el algoritmo de EMA, escribí un algoritmo de indicadores de EMA con mis propias manos (apéndice final)
Una vez más, los resultados coinciden con los de TA.EMA y no hay ninguna diferencia.

¿Es un problema de fuentes de datos?

Para simplificar aún más el análisis, cambié el parámetro de la EMA a 2, reducí el alcance de la detección, arrastré el gráfico a la izquierda, y me gustaría comparar los valores de la EMA desde la primera línea K para ver cuándo comenzó la discrepancia.

Cuando llegué a la primera línea, me sorprendió descubrir que la primera línea K de la TV y la primera línea K de la FMZ no eran el mismo tiempo, la TV tenía que salir una línea más hacia adelante.
En este caso, el valor de la EMA es diferente a partir de la primera, y cada EMA posterior tiene un peso sobre la anterior.
No es de extrañar que después de todo los datos fueran inconsistentes, el análisis terminó aquí, la razón es extraña, pero al final se encontró.

function whl_ema(src, length) {
var arr = [];
var sum = 0;
var alpha = 2 / (length + 1)
for(var i in src){
if(i<length-1) {
arr[i] = null;
sum += src[i];
}else if(i==length-1){
arr[i] = (sum+src[i])/length;
}else{
arr[i] = alpha * src[i] + (1 - alpha) * arr[i-1]
}
}
return arr;
}

Related Recommendations
Comment
All comments (12)

    今天我又在策略中用到这个指标,比较后发现日线和TV中相差不大,甚至完全一致,但低级别的差别很大,最后一翻尝试,也有了些收获。

    5 years ago

    下面有朋友留言说无所谓、实际这个是要看需求的、如果自己或者客户有这个需求、对我们做开发的人来说,不管它有用没用,你都得认认真真搞明白的。

    5 years ago

    胡哥,那么会不会 FMZ 的 SuperTrend 的指标和TV的总是晚一根K线时间,也是这个原因呢???
    这个问题总是会影响到下单 或者 转向的机会的滞后。。。。愁死我了。。。

    5 years ago

    只要不是高频,趋势类策略不必计较晚点进场早点进场,如果非常在意这些说明策略容错能力有问题,那么指标就更无所谓了

    5 years ago

    只要不是高频,趋势类策略不必计较晚点进场早点进场,如果非常在意这些说明策略容错能力有问题,那么指标就更无所谓了

    5 years ago

    只要不是高频,趋势类策略不必计较晚点进场早点进场,如果非常在意这些说明策略容错能力有问题,那么指标就更无所谓了

    5 years ago

    「TV中的第1根K线和FMZ中的第1根K线不是同一个时间」具体是指?
    K线长度不对等也不影响指标计算的,只要K线数据一样。

    5 years ago

    影响的,每一根都有权重,比如小时线、TV中是第1根是:12:00,而FMZ中第1根是13:00,差了1根,这样计算时,假设EMA参数为2,这样计算第3根K线(FMZ中是第2根)的EMA,FMZ中EMA = (C2+C3)/2,而TV中EMA=(C1+C2)/21/3+C32/3,完全不同的,

    5 years ago

    是K线数据BAR数量不一样,会影响迭代计算的数值。 对应的BAR数据是一样的。

    5 years ago

    胡哥,梦大,那么会不会 FMZ 的 SuperTrend 的指标和TV的总是晚一根K线时间,也是这个原因呢???
    这个问题总是会影响到下单 或者 转向的机会的滞后。。。。愁死我了。。。

    5 years ago

    如果K线数据一样,只是多一根少一根, 不应该差别很大的。。。

    5 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)