Descubriendo las funciones de Trader de PHP

En un proyecto que estoy trabajando actualmente con PHP me ha tocó hacer unos gráficos que mostraran una linea de tendencia.

Ya algo familiarizada con el trading  sabía que se manejan distintos indicadores para calcular la tendencia pero no sabía como se hace exactamente.

Comencé a buscar y llegué a las funciones de trader de PHP.

Estas funciones trabajan con una librería de C que se llama TA-Lib : Technical Analysis Library

Para usar la librería he tenido que bajas las DLL de aquí, copiarlas en el directorio de extensiones de mi php,  y mandarlas a llamar desde el php.ini  : extension=php_trader.dll

Además tuve que agregar esto a mi php.ini para que pudiera funcionar:

trader.real_precision=1 
trader.real_round_mode=HALF_DOWN

Según la documentación oficial de PHP estas dos opciones son para:

trader.real_precision integer

Todos los valores de los arrays devueltos serán redondeados a esta precisión. Sin enbargo, los cálculos dentro de TA-Lib se realizarán con valores no redondeados.

trader.real_round_mode string

Controla la política de redondeo de números reales de trader. Los valores válidos son HALF_UPHALF_DOWNHALF_EVEN y HALF_ODD. El comportamiento es idéntico al de la función round() usada con el argumento de modo.

Una vez reiniciado el apache ya pude hacer uso de las funciones, aquí un listado de todas las disponibles, luego hablaremos de cada una.

Ahora necesitaba encontrar una función que calculara la tendencia que yo necesitaba, mi primera opción fue usar la función trader_ht_trendline — Transformación de Hilbert – Línea de tendencia instantánea.

El problema es que esta siempre me devolvía false, a menos que le pasara un array de números reales muy grande, mayor a 70, y yo necesitaba calcular la tendencia para un gráfico de 30 días en el eje X.

Luego de conversar con mi socio quien tiene conocimiento estadístico, llegamos a la conclusión de que la forma mas fácil de calcular una linea de tendencia es la MEDIA MÓVIL SIMPLE (SMA).

En trading, “La media móvil se basa en los precios pasados y puede ser categorizada como un indicador que sigue la tendencia. Mide el precio medio de un instrumento particular de trading a lo largo de un periodo de tiempo”

Y se calcula de la siguiente forma: “Si se coloca una media móvil simple de 5 periodos en un gráfico de 1 hora, entonces se suman los precios de cierre de las últimas 5 horas y luego se divide ese número entre 5, y listo! Ahí tienes una media móvil simple!”

Así que esto se tradujo en cambiar la función que estaba usando, comencé a usar trader_sma , que calcula la Media móvil simple.

El código en cuestión me quedó muy sencillo de esta manera:

$tendencia = trader_sma ($itarraytocalculatetd, 5)

El primer parámetro de la función es el array de valores sobre los cuales quieres calcular la tendencia, debe ser un arreglo de números reales, usa floatval() para asegurarte de que pasas reales, o de lo contrario la función te retornará false.

El segundo parámetro es el número de período, como dije arriba un ejemplo puede ser 5 horas hacia atrás, pero lo puedes colocar desde desde 2 hasta 100000.

Y finalmente, pude pintar mi linea de tendencia en el gráfico de histórico de followers de una cuenta instagram:

 

 

 

Tags: