Análisis de Criptomonedas con Python – Herramientas, Librerías y lo que de

StaedLumo
Mobylette
#1



Vamos a meternos en este post con Python y con las herramientas existentes que contamos para poder hacer análisis de criptomonedas y análisis técnico si así quisiéramos sin despeinarnos mucho

Si bien, el mercado cripto es muy volátil y muy influenciable por las noticias exteriores, las monedas que ya están en un top 50 con una capitalización considerablemente grande se pueden sacar datos bastantes objetivos con el análisis técnico.



Recomiendo el post del siguiente shur, donde tiene mucho informacion sobre el analisis técnico y de muchos conceptos que vamos a ir viendo por aqui que estarán mejor explicados que en este post:

ANÁLIS TÉCNICO EN CRIPTOMONEDAS (válido también para bolsa) +serio
https://www.forocoches.com/foro/show....php?t=8365439


Voy escribiendo un índice que irá aumentando según desarrollemos el post.

1- Python, Anaconda y los Cuadernos Jupyter
2- Librerías que nos harán la vida más fácil.
  • Manejo de Datos y Gráficos
    • Pandas, Numpy y Matplotlib
  • Obtención de los Datasets y de Información
    • Yfinance
    • request
  • Gráfico de Velas
    • Mplfinance
  • Análisis Técnico
    • TA-Lib
3- Construcción de Estrategias Básicas
  • Estrategia Basada en la SMA y EMA
  • Búsqueda de Patrones de Velas

1- Python, Anaconda y los Cuadernos Jupyter


Empezamos con Python, un lenguaje de programación muy accesible para todo el mundo. Si aún no lo tienes instalado, recomiendo que lo hagas junto a la distribución Anaconda.

Anaconda es simplemente un gestor de paquetes para Python. Estos paquetes pueden ser desde librerías a IDE (Entorno de desarrollo) que en nuestro caso nos vendrá muy bien porque utilizaremos los cuadernos Jupyter.

Los cuadernos Jupyter es una forma muy cómoda de programar y muy utilizado en el mundillo de Data Science.
La peculiaridad que tiene es que vamos añadiendo celdas donde escribimos el código y lo podemos ir ejecutando independientemente del resto. El código se lee siempre de arriba a abajo, por lo que para ejecutar variables en celdas de mas abajo que han sido nombradas en celdas de más arriba, están deben de ejecutarse antes como en cualquier otro lenguaje de programación.


Ejemplo de como se trabaja en un cuaderno Jupyter con un Dataset de Bitcoin.

[1] Importamos la librería pandas (la veremos más adelante).
[2] Leemos el dataset del valor del bitcoin.
[3] Imprimimos la grafica representando los valores “Close” – cierre de la cotización de Bitcoin respecto al tiempo.

Por lo que la ventaja de los cuadernos Jupyter es la de poder ir probando el código que vamos escribiendo, sin tener que volver a ejecutar todo lo anterior. Muy cómodo para cuando queremos imprimir gráficas, que pueden demorarse un tiempo, sin tener que ejecutar todas las anteriores.
En el siguiente link podéis encontrar más información sobre que son los entornos de trabajo en Python y de como instalar Python junto con Anaconda:
https://jarroba.com/entornos-de-pyth...conda-y-comun/


2- Librerías que nos harán la vida más fácil

¿Qué son las librerías? Las librerías son simplemente programas que la gente ha escrito para solucionar problemas específicos. Por ejemplo, si quiero saber el valor medio del siguiente vector [1, 3], puedo escribir un programa que me sume primeramente los valores del vector, y luego dividir entre la longitud del vector (en este caso 2), para obtener el valor medio de 2. O en cambio, puedo tirar de la librería NumPy, que dispone de una función para realizar media y obtener el resultado directo.

numpy.mean([1,3])
2.0
Para importar las librerías a nuestro proyecto tienen que estar previamente instaladas. Lo podremos hacer en la consola de Anaconda escribiendo:

pip install nombre_de_la_libreria
Luego con tan solo escribir import nombre_de_la_libreria ya podríamos disfrutar de sus funciones en nuestro proyecto.
En muchos casos, se escribe por ejemplo import numpy as np. Este as sirve para especificar el nombre con el que llamaremos a esa librería. Podríamos poner import numpy as goku y llamar a la función media anterior de la siguiente forma:

goku.mean([1,3])
2.0
Tendríamos el mismo resultado, solamente que por convenio a la librería NumPy se la asigna el alias de np, a pandas pd y a la de Matplotlib se le asigna plt.

Importación de las librerías a nuestro proyecto.



Manejo de Datos

Estas tres librerías se pueden decir que es son la base para cualquier análisis de datos en cualquier materia que se quiera realizar. Si hemos utilizado la distribución de Anaconda, las libreria pandas y NumPy ya vendrán instaladas.

Pandas: Con esta librería podremos manejar los Datasets muy fácilmente. Leer/ crear csv y excels lo podremos hacer en una línea.
Web: https://pandas.pydata.org/

NumPy: Nos añade la posibilidad de trabajar con matrices y un gran número de funciones matemáticas.
Web: https://numpy.org/

Matplotlib: Para todo el tema de visualización de datos, usaremos esta librería. En esta categoría hay mas variedad para elegir y aquí cada uno puede tener sus preferencias.
Web: https://matplotlib.org/
  • Otras opciones: plotly

Obtención de los Datasets y de Información

Yfinance


Con esta librería podremos descargar los datos históricos de un gran número de criptomonedas, así como también de acciones de empresas. Es muy fácil de utilizar. Deberemos instalarla previamente en nuestro entorno de trabajo si no la tuviéramos con el clásico:



pip install yfinance
Web: https://pypi.org/project/yfinance/

Para descargar el dataset que queramos basta con escribir lo siguiente



Descarga del historial de Cardano (ADA) desde el inicio del año.
[1] Importamos la librería yfinance con el alias de yf a nuestro proyecto.
[2] Definimos la variable ADA_data con el historial descargado. La función yf.download() tiene estas variables:
- Símbolo del par a descargar
- Fecha de inicio
- Fecha final
- Intervalo: El valor por defecto es de 1 día, pero también podremos obtener los siguientes: 1m (minuto), 2m, 5m, 15m, 30m, 60m, 90m, 1h (hora), 1d (día), 5d, 1wk (semana), 1mo (mes), 3mo.
[3] Vemos que el tipo de objeto al llamar a la función yf.download() es un DataFrame
[4] Guardamos el dataset descargado en nuestra carpeta con la ruta y nombre que queramos.


Lo que se obtiene es un dataset en formato OHLC (Open-high-low-close). La primera columna con la fecha, las siguientes los valores OHLC y la última el volumen.



Si visitamos la web de la librería de yfinance podemos ver alguna opción más que nos puede facilitar la vida, como por ejemplo si queremos descargar el dataset del ultimo año podemos escribirlo de la siguiente forma:
ADA_data = yf.download("ADA-USD", start="2020-05-16", end="2021-05-16", interval = "1d", auto_adjust = True)
O directamente sustituir start y end por period = “1y” (periodo de un año)
ADA_data = yf.download("ADA-USD", period = “1y”, interval = "1d", auto_adjust = True)
Periodos válidos: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max
Opción por defecto: 1mo

  • Otras opciones: yahoo_fin

Gráficos de Velas
Hay varias librerías que podemos usar para representar los típicos gráficos de velas que se usan en el análisis técnico. Funcionan con los datos OHLC que ya hemos obtenidos previamente.

Mplfinance
Esta librería estaba antiguamente integrada en Matplotlib pero ya anda por si sola.
Web: https://github.com/matplotlib/mplfinance
Para instalarla usaremos:
pip install mplfinance

Lo importamos en el proyecto como: import mplfinance as mpf
Es muy fácil de usar, si nuestro Dataset contiene un DataIndex, y las columnas de Open, High, Low y Close lo podemos obtener directamente.




[15] Imprimimos los últimos 100 valores del DataFrame con [-100:] para poder visualizar mejor las velas.
Has varios tipos extras de gráficos que podemos conseguir, y además varios estilos ya predefinidos para colorearnos las velas. También podeis probar con style = “binance”
Sin embargo, si solo imprimiéramos las velas, nuestro análisis se quedaría un poco corto. Por tanto, vamos a proceder a imprimir sobre la gráfica de velas también nuestras curvas de medias de SMA-7 y SMA-21 junto al volumen.

[16] Usamos make_addplot() para crear un diccionario para pasarlo dentro de la función plot().


Aquí podéis encontrar más ejemplos de cómo usar esta librería:
https://github.com/matplotlib/mplfin.../addplot.ipynb
https://github.com/matplotlib/mplfin...s/panels.ipynb


Análisis Técnico

Lo he puesto al principio del post, pero lo vuelvo a escribir aquí. Pasaos por el hilo de este shur para entender mejor los conceptos que vamos a ir viendo:


ANÁLIS TÉCNICO EN CRIPTOMONEDAS (válido también para bolsa) +serio
https://www.forocoches.com/foro/show...365439


TA-Lib

Empezamos con esta librería, el corazón de cualquier análisis técnico que queramos llevar a cabo sin tener que machacar las formulas a mano y preguntarnos si finalmente habíamos acertado.

Web: http://mrjbq7.github.io/ta-lib/

La única pega para poder utilizar esta librería es que no se instala tan fácilmente como las demás, y tendremos que trastear un poco. Pero el tiempo que invertimos en la instalación, es tiempo que nos devolverá en oro con la facilidad de sus funciones.

En esta web explica como instalarlo para cada sistema operativo:
https://blog.quantinsti.com/install-ta-lib-python/

La librería TA-Lib esta organizada por las siguientes categorías:
  • Overlap Studies
  • Momentum Indicators
  • Volume Indicators
  • Volatility Indicators
  • Price Transform
  • Cycle Indicators
  • Pattern Recognition
  • Statistic Functions

Overlap Studies

En esta categoría podemos encontrar las Bollinger Bands, EMA, MA y SMA por poner unos ejemplos.

SMA, o Simple Moving Average es el valor que se obtiene al realizar una media simple con los x valores últimos que queramos Todos los valores tienen el mismo peso en el cálculo.


En cambio, la EMA o Exponential Moving Average, los valores mas recientes, tienen mas peso a la hora de calcular la media.


Pues vamos a meternos ya con Python para obtener estas dos medias en nuestro Dataset.


Del [1] al [2] importamos librerías y cargamos nuestro Dataset de ADA.
[3] Utilizamos la función SMA() y EMA() que vienen en la librería TA-lib. Para ello decimos sobre que columna de nuestro dataset a de calcular junto al periodo que deseamos.


[4] Ahora podemos añadir a nuestro DataFrame las nuevas columnas calculadas. Ademas podemos ver los 25 primeros valores de la tabla, y comprobamos que, para el SMA y EMA de 7, no se obtiene ninguna media al no disponer de suficientes datos para ese periodo. Por lo que podemos confirmar el cálculo.

[5] Y ahora haciendo uso de Matplotlib imprimimos sobre el valor de cierre de ADA, la media simple de 7 y de 21. También podríamos hacerlo de igual forma para las EMAs.
Lo bueno que tiene Matplotlib, es que podemos dibujar varias curvas superpuestas y luego imprimirlas todas juntas como acabamos de ver.


3- Construcción de Estrategias Básicas

Estrategia Basada en la SMA y EMA

Aprovecho que acabamos de ver el cálculo de estas dos medias, para hacer un paréntesis en la exploración de la librería de TA-Lib para ver que tipo de media se comporta mejor en el mercado cripto.


La teoría dice que la media móvil exponencial (EMA) se comporta mejor que la media simple (SMA) en el mercado cripto, debido a que se adapta más rápido a las fluctuaciones y a la volatilidad de este mercado.


Vamos a ponerlo a prueba a continuación y para ello, lo primero que tenemos que tener es un valor con el que poder comparar ambas estrategias. Con ese fin vamos a calcula primero el rendimiento del precio de ADA.


El parámetro con el que vamos a comparar resultados es el Retorno Logarítmico o Log Returns. Tiene sus beneficios frente al Retorno Simple, pero no me extiendo aquí, os dejo este link para que profundicéis por vuestra cuenta:


https://investmentcache.com/magic-of...oncept-part-1/



[6] Creamos una nueva columna en nuestro DataFrame con el nombre de “Retorno” en el que calculamos el Retorno Logarítmico para cada día. Los números positivos significan que el Cierre de ese día es mayor al anterior. Un valor negativo indica que cerramos el día con pérdidas respecto al día anterior.
[7] Aplicamos la inversa del logaritmo, para obtener el Retorno Simple, un +37.502%.


El siguiente paso es generar las señales según la estrategia que queremos marcar basada en las medias SMA y EMA. La regla de oro es que vamos en largo (compramos) cuando la media mas corta se encuentra por encima de la media mas larga. Para nuestro propósito, marcaremos una posición en largo como 1 y una posición en corto como -1.


[9] Creamos una nueva columna para marcar si estamos en corto o en largo. Cuando la media de 7 días sea mayor que la media de 21 días, marcamos un 1 y viceversa.




[10] Posición del mercado según nuestras medias a lo largo del tiempo.

Para calcular la Rentabilidad de la estrategia se realiza en base al Retorno que hubiéramos tenido si hubiéramos mantenido el Hold en todo este tiempo.

Lo que haremos será multiplicar la columna de Retorno (estrategia de hold) por la posición en la que se encuentra en ese momento nuestra estrategia.
En valor absoluto, ambas columnas tienen el mismo valor, no obstante, obtendremos 4 resultados diferentes según los signos que multipliquemos en cada caso. No olvidar que Retorno + significa que el precio de ADA sube, Retorno -, el valor de ADA decrece. Posición + significa que en este momento poseemos ADA en nuestra cartera, y Posición negativa, significa que hemos vendido ADA.
  • Retorno +, Posición +: Estrategia +. Sumamos valor a nuestra estrategia.
  • Retorno -, Posición +: Estrategia -. ADA cae de valor, y como la tenemos en nuestra cartera, restamos valor a nuestra estrategia.
  • Retorno +, Posición -: Estrategia -. ADA aumenta de valor, lamentablemente no la tenemos en cartera. Como estamos comparando respecto a la estrategia de Hold, restamos valor a nuestra estrategia.
  • Retorno -, Posición -: Estrategia +. ADA cae de valor, sin embargo, no la tenemos en nuestra cartera, y no nos afecta esta caída, todo lo contrario, podemos decir que aumenta de valor en nuestra estrategia al no estar dentro de la operación.


[12] Para este periodo de tiempo, la estrategia nos daría menor rentabilidad si hubiéramos mantenido simplemente holdeando el ADA en nuestra cartera. La estrategia de EMA da un resultado ligeramente mayor al de la estrategia seguida por la SMA.


[14] Gráfica con el retorno de la estrategia de Hold, SMA-7/21 y EMA-7/21

En cambio, si repetimos el proceso para cambiando solamente el Dataset, y ampliando el periodo de tiempo a 2 años*, los resultados son completamente diferentes.


*Dataset del 18-05-2019 al 18-05-2021






Búsqueda de Patrones de Velas

En este apartado veremos cómo identificar patrones de velas con la librería TA-Lib.
Para ver todos los patrones que están programados en la librería, basta con pasarnos por su documentación:
https://mrjbq7.github.io/ta-lib/func...cognition.html

El primer patrón que vamos a reconocer es el de “Morning Star” o estrella del amanecer. Es un patrón que consta de tres velas, e indica un cambio de tendencia bajista, hacia alcista.
De la documentación vemos que si buscamos “Morning Star” tenemos la siguiente línea de código que tenemos que implementar:
integer = CDLMORNINGDOJISTAR(open, high, low, close, penetration=0)
[17] Implementamos el código anterior y se obtiene una serie aparentemente llena de ceros.
[18] Buscamos que valores son diferentes a 0 en la serie y obtenemos dos fechas con un 100.


[19] Creamos un DataFrame que contenga la primera fecha para visualizar el resultado.
[20] Valiéndonos de la librería Mplfinance vista anteriormente, imprimimos la gráfica con las velas. Si nos fijamos bien, el día 13 de Agosto, es cuando se cumple la tercera vela del patrón.


En efecto, se da el patrón de tres velas que indica el “Morning Star”, sin embargo, no se da el resultado esperado. Esto es debido a que el precio estaba tanteando una resistencia, y no venia de un periodo bajista. Aquí deberemos tener cuidado, porque TA-Lib nos proporciona donde se da el patrón, pero no satisface la condición de que vengamos de un periodo bajista.
En este punto, si queremos operar con el patrón de “Morning Star” deberíamos poner condiciones extras, como que un porcentaje X de velas anteriores sean Bearish (Bajistas) o combinarlo con otros patrones como el de “Engulfing”.


Recomiendo esta página para ver como se debe de operar con los diferentes patrones, y cuáles son sus condiciones:
https://www.dailyfx.com/espanol/apre...-amanecer.html


Y si os preguntáis cual es la diferencia entre “Morning Star” y “Morning Doji Star” la encontráis aquí:
http://www.finvids.com/Candlestick-Chart/Morning-Star/



Actualizaciones:

16/05/2021: Añadida la sección de "Librerías que nos harán la vida más fácil". En el indice añado la libreria request, pero no la tocaré hasta al menos haber visto la libreria de TA-Lib que es donde podemos decir que ya emnpieza la magia.

17/05/2021: Empezamos con la libreria TA-Lib. SMA y EMA.

19/05/2021: Creación y Verificacion de una estrategia basica con las medias SMA y EMA

21/05/2021: En el punto 2, añado el apartado de representacion de Gráficos de Velas. Gracias a @empotrador17 por sugerir las librerias de plotly y yahoo_fin como alternativas.

25/05/2021: Actualización del calculo de la Rentabilidad de la Estrategia con el código y su aclaración.

30/05/2021: Añadida la última seccion de Búsqueda de patrones de Velas

Lo que no se entienda bien, o no este bien redactado dejarmelo por aqui e iré mejorandolo.
HashMap
ForoCoches: Miembro
#2
sitio, interesante
Krules
De mi porra al cielo!
#3
sitio
Juatn
ForoCoches: Miembro
#4
Sitio
Mørke
ᛖᛁᚾᚥᛁᚾᛞᛁᚱ
#5
Gracias por el aporte shurmano!
mcl34
ForoCoches: Usuario
#6
Sitio
SurRockman
ForoCoches: Miembro
#7
Sitio
snikeoff
ForoCoches: Miembro
#8
Sitio
Noobie
ForoMiembros: Coche
#9
Pillo sitio, estoy empezando con Python y con esta temática me divierto aprendiendo. Gracias!

Ayer estaba practicando con este ejercicio, por si puede aportar algo al hilo https://medium.com/analytics-vidhya/...on-5a307e02d30


edit: danos acceso al dataset para ir siguiéndote
Teranon
ForoCoches: Usuario
#10
Pillo sitio
eriko6513
Hinjeniero
#11
Sitio, shur si necesitas ayuda manda MP, tengo experiencia con esto de los datos, se podría hacer un buen dashboard. Saludos
tvirus
Reportadillo
#12
Pillo sitio
ElBicichi
ForoCoches: Premium
#13
Up, interesa
Krevant
NullPointerException
#14
Pillo sitio
Abistral
ForoCoches: Miembro
#15
Para descargar historiales de precios y algunas polladas en formato csv y otros formatos para base de datos en Quandl hay varias fuentes
kurupo
ForoCoches: Miembro
#16
Cita de StaedLumo



Vamos a meternos en este post con Python y con las herramientas existentes que contamos para poder hacer análisis de criptomonedas y análisis técnico si así quisiéramos sin despeinarnos mucho

Si bien, el mercado cripto es muy volátil y muy influenciable por las noticias exteriores, las monedas que ya están en un top 50 con una capitalización considerablemente grande se pueden sacar datos bastantes objetivos con el análisis técnico.
Voy escribiendo un índice que irá aumentando según desarrollemos el post.

1- Python, Anaconda y los Cuadernos Jupyter
2- Librerías que nos harán la vida más fácil.
  • Pandas, Numpy y Matplotlib
  • Yfinance
  • TA-Lib

1- Python, Anaconda y los Cuadernos Jupyter


Empezamos con Python, un lenguaje de programación muy accesible para todo el mundo. Si aún no lo tienes instalado, recomiendo que lo hagas junto a la distribución Anaconda.

Anaconda es simplemente un gestor de paquetes para Python. Estos paquetes pueden ser desde librerías a IDE (Entorno de desarrollo) que en nuestro caso nos vendrá muy bien porque utilizaremos los cuadernos Jupyter.

Los cuadernos Jupyter es una forma muy cómoda de programar y muy utilizado en el mundillo de Data Science.
La peculiaridad que tiene es que vamos añadiendo celdas donde escribimos el código y lo podemos ir ejecutando independientemente del resto. El código se lee siempre de arriba a abajo, por lo que para ejecutar variables en celdas de mas abajo que han sido nombradas en celdas de más arriba, están deben de ejecutarse antes como en cualquier otro lenguaje de programación.


Ejemplo de como se trabaja en un cuaderno Jupyter con un Dataset de Bitcoin.

[1] Importamos la librería pandas (la veremos más adelante).
[2] Leemos el dataset del valor del bitcoin.
[3] Imprimimos la grafica representando los valores “Close” – cierre de la cotización de Bitcoin respecto al tiempo.

Por lo que la ventaja de los cuadernos Jupyter es la de poder ir probando el código que vamos escribiendo, sin tener que volver a ejecutar todo lo anterior. Muy cómodo para cuando queremos imprimir gráficas, que pueden demorarse un tiempo, sin tener que ejecutar todas las anteriores.
En el siguiente link podéis encontrar más información sobre que son los entornos de trabajo en Python y de como instalar Python junto con Anaconda:
https://jarroba.com/entornos-de-pyth...conda-y-comun/


2- Librerías que nos harán la vida más fácil

Continuará mas tarde... En este tema ya veremos como descargar los datos de cotizacion con yfinace de manera simple.

Lo que no se entienda bien, o no este bien redactado dejarmelo por aqui e iré mejorandolo.
cita con los updates shur. grx
StaedLumo
Mobylette
#17
Cita de Noobie
Pillo sitio, estoy empezando con Python y con esta temática me divierto aprendiendo. Gracias!

Ayer estaba practicando con este ejercicio, por si puede aportar algo al hilo https://medium.com/analytics-vidhya/...on-5a307e02d30


edit: danos acceso al dataset para ir siguiéndote

Acabo de añadir en la seccion de librerias la de yfinance, con esta ya vas a poder crearte tus propios datasets al gusto




Cita de eriko6513
Sitio, shur si necesitas ayuda manda MP, tengo experiencia con esto de los datos, se podría hacer un buen dashboard. Saludos


Pues no es mala idea si llegamos hasta el punto de backtesting. Yo estuve trasteando con Streamlit, pero no llegue muy lejos mas alla de sacar unos graficos y hacer un poco interactivo las graficas.


Cita de Abistral
Para descargar historiales de precios y algunas polladas en formato csv y otros formatos para base de datos en Quandl hay varias fuentes


Me lo apunto shur, parece bastante sencilla la web, y obtienes directamente el csv, iba a proponer de mirarlo en la seccion de requests pero no hace falta.


Cita de kurupo
cita con los updates shur. grx


Pequeña actualizacion .
Noobie
ForoMiembros: Coche
#18
@StaedLumo idea: podemos capturar un dataframe con los tweets de Elon musk que tengan mas de "x" likes o retweets y ver su influencia en el precio del BTC
StaedLumo
Mobylette
#19
Dejo actualización ya con las dos primeras funciones de TA-Lib. La EMA y la SMA.



Cita de Noobie
@StaedLumo idea: podemos capturar un dataframe con los tweets de Elon musk que tengan mas de "x" likes o retweets y ver su influencia en el precio del BTC

Por poder si se puede claro. Ahi ya dependiendo del grado de automatizacion que le quieras dar. Puedes buscarte una libreria o trabajar con la API de twitter y ver los tweets que contengan palabras claves que quieras analizar, y hacerte tu propia base de datos de tweets de Elon, aunque seguramente ya existe algo asi. Luego imprimir en la misma gráfica, lo puedes hacer con Matplotlib.


Yo por el momento, en este proyecto no voy a tratar ese tema.
Rub_Gv
ForoCoches: Miembro
#20
Pillo sitio para leer con calma. Parece interesante. Gracias por el curro shur
wells
ForoCoches: Miembro
#21
Sitio
Andrew_Ryan
ForoCoches: Miembro
#22
Pillo sitio para practicar para mi nueva empresa
empotrador17
ForoCoches: Usuario
#23
Muy interesante shur. Te recomiendo también la librería yahoo_fin, muy similar a yfinance pero que tiene alguna cosilla diferente y que quizás puedan complementarse para facilitarte la vida en algún análisis.

En cuanto a gráficas te recomiendo plotly, por si la quieres también echar un ojo.

Y ya si te metes con temas de deep learning pueden salir cosas muy potentes: https://medium.com/activewizards-mac...s-eb578a2387a3

Si necesitas una mano con cualquier cosa manda un MP.
Pakito14
ForoCoches: Usuario
#24
Pillo sitio
CaraShitMan IV
ForoCoches: Miembro
#25
Gracias, muy interesante!
doppler
ForoCoches: Usuario
#26
sitiazo
HaGeN
ForoCoches: Miembro
#27
Seria interesante que planteases algo como prediciones sobre redes LSTM.
Julian1984
ForoCoches: Miembro
#28
Cita de StaedLumo
Acabo de añadir en la seccion de librerias la de yfinance, con esta ya vas a poder crearte tus propios datasets al gusto








Pues no es mala idea si llegamos hasta el punto de backtesting. Yo estuve trasteando con Streamlit, pero no llegue muy lejos mas alla de sacar unos graficos y hacer un poco interactivo las graficas.






Me lo apunto shur, parece bastante sencilla la web, y obtienes directamente el csv, iba a proponer de mirarlo en la seccion de requests pero no hace falta.






Pequeña actualizacion .

A favoritos que vas!
Gracias!
Ithaliar
ForoCoches: Miembro
#29
Un upeo. De aquí a hacer scripts para compras automatizadas hay nada!
13NachoVidal
Mi polla en tu frente.
#30
Cita de StaedLumo



Vamos a meternos en este post con Python y con las herramientas existentes que contamos para poder hacer análisis de criptomonedas y análisis técnico si así quisiéramos sin despeinarnos mucho

Si bien, el mercado cripto es muy volátil y muy influenciable por las noticias exteriores, las monedas que ya están en un top 50 con una capitalización considerablemente grande se pueden sacar datos bastantes objetivos con el análisis técnico.



Recomiendo el post del siguiente shur, donde tiene mucho informacion sobre el analisis técnico y de muchos conceptos que vamos a ir viendo por aqui que estarán mejor explicados que en este post:

ANÁLIS TÉCNICO EN CRIPTOMONEDAS (válido también para bolsa) +serio
https://www.forocoches.com/foro/show....php?t=8365439


Voy escribiendo un índice que irá aumentando según desarrollemos el post.

1- Python, Anaconda y los Cuadernos Jupyter
2- Librerías que nos harán la vida más fácil.
  • Manejo de Datos y Gráficos
    • Pandas, Numpy y Matplotlib
  • Obtención de los Datasets y de Información
    • Yfinance
    • request
  • Análisis Técnico
    • TA-Lib

1- Python, Anaconda y los Cuadernos Jupyter


Empezamos con Python, un lenguaje de programación muy accesible para todo el mundo. Si aún no lo tienes instalado, recomiendo que lo hagas junto a la distribución Anaconda.

Anaconda es simplemente un gestor de paquetes para Python. Estos paquetes pueden ser desde librerías a IDE (Entorno de desarrollo) que en nuestro caso nos vendrá muy bien porque utilizaremos los cuadernos Jupyter.

Los cuadernos Jupyter es una forma muy cómoda de programar y muy utilizado en el mundillo de Data Science.
La peculiaridad que tiene es que vamos añadiendo celdas donde escribimos el código y lo podemos ir ejecutando independientemente del resto. El código se lee siempre de arriba a abajo, por lo que para ejecutar variables en celdas de mas abajo que han sido nombradas en celdas de más arriba, están deben de ejecutarse antes como en cualquier otro lenguaje de programación.


Ejemplo de como se trabaja en un cuaderno Jupyter con un Dataset de Bitcoin.

[1] Importamos la librería pandas (la veremos más adelante).
[2] Leemos el dataset del valor del bitcoin.
[3] Imprimimos la grafica representando los valores “Close” – cierre de la cotización de Bitcoin respecto al tiempo.

Por lo que la ventaja de los cuadernos Jupyter es la de poder ir probando el código que vamos escribiendo, sin tener que volver a ejecutar todo lo anterior. Muy cómodo para cuando queremos imprimir gráficas, que pueden demorarse un tiempo, sin tener que ejecutar todas las anteriores.
En el siguiente link podéis encontrar más información sobre que son los entornos de trabajo en Python y de como instalar Python junto con Anaconda:
https://jarroba.com/entornos-de-pyth...conda-y-comun/


2- Librerías que nos harán la vida más fácil

¿Qué son las librerías? Las librerías son simplemente programas que la gente ha escrito para solucionar problemas específicos. Por ejemplo, si quiero saber el valor medio del siguiente vector [1, 3], puedo escribir un programa que me sume primeramente los valores del vector, y luego dividir entre la longitud del vector (en este caso 2), para obtener el valor medio de 2. O en cambio, puedo tirar de la librería NumPy, que dispone de una función para realizar media y obtener el resultado directo.

Para importar las librerías a nuestro proyecto tienen que estar previamente instaladas. Lo podremos hacer en la consola de Anaconda escribiendo:

Luego con tan solo escribir import nombre_de_la_libreria ya podríamos disfrutar de sus funciones en nuestro proyecto.
En muchos casos, se escribe por ejemplo import numpy as np. Este as sirve para especificar el nombre con el que llamaremos a esa librería. Podríamos poner import numpy as goku y llamar a la función media anterior de la siguiente forma:

Tendríamos el mismo resultado, solamente que por convenio a la librería NumPy se la asigna el alias de np, a pandas pd y a la de Matplotlib se le asigna plt.

Importación de las librerías a nuestro proyecto.



Manejo de Datos

Estas tres librerías se pueden decir que es son la base para cualquier análisis de datos en cualquier materia que se quiera realizar. Si hemos utilizado la distribución de Anaconda, las libreria pandas y NumPy ya vendrán instaladas.

Pandas: Con esta librería podremos manejar los Datasets muy fácilmente. Leer/ crear csv y excels lo podremos hacer en una línea.
Web: https://pandas.pydata.org/

NumPy: Nos añade la posibilidad de trabajar con matrices y un gran número de funciones matemáticas.
Web: https://numpy.org/

Matplotlib: Para todo el tema de visualización de datos, usaremos esta librería. En esta categoría hay mas variedad para elegir y aquí cada uno puede tener sus preferencias.
Web: https://matplotlib.org/


Obtención de los Datasets y de Información

Yfinance


Con esta librería podremos descargar los datos históricos de un gran número de criptomonedas, así como también de acciones de empresas. Es muy fácil de utilizar. Deberemos instalarla previamente en nuestro entorno de trabajo si no la tuviéramos con el clásico:



Web: https://pypi.org/project/yfinance/

Para descargar el dataset que queramos basta con escribir lo siguiente



Descarga del historial de Cardano (ADA) desde el inicio del año.
[1] Importamos la librería yfinance con el alias de yf a nuestro proyecto.
[2] Definimos la variable ADA_data con el historial descargado. La función yf.download() tiene estas variables:
- Símbolo del par a descargar
- Fecha de inicio
- Fecha final
- Intervalo: El valor por defecto es de 1 día, pero también podremos obtener los siguientes: 1m (minuto), 2m, 5m, 15m, 30m, 60m, 90m, 1h (hora), 1d (día), 5d, 1wk (semana), 1mo (mes), 3mo.
[3] Vemos que el tipo de objeto al llamar a la función yf.download() es un DataFrame
[4] Guardamos el dataset descargado en nuestra carpeta con la ruta y nombre que queramos.


Lo que se obtiene es un dataset en formato OHLC (Open-high-low-close). La primera columna con la fecha, las siguientes los valores OHLC y la última el volumen.



Si visitamos la web de la librería de yfinance podemos ver alguna opción más que nos puede facilitar la vida, como por ejemplo si queremos descargar el dataset del ultimo año podemos escribirlo de la siguiente forma:
O directamente sustituir start y end por period = “1y” (periodo de un año)
Periodos válidos: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max
Opción por defecto: 1mo


Análisis Técnico

Lo he puesto al principio del post, pero lo vuelvo a escribir aquí. Pasaos por el hilo de este shur para entender mejor los conceptos que vamos a ir viendo:


ANÁLIS TÉCNICO EN CRIPTOMONEDAS (válido también para bolsa) +serio
https://www.forocoches.com/foro/show...365439&page=13


TA-Lib

Empezamos con esta librería, el corazón de cualquier análisis técnico que queramos llevar a cabo sin tener que machacar las formulas a mano y preguntarnos si finalmente habíamos acertado.

Web: http://mrjbq7.github.io/ta-lib/

La única pega para poder utilizar esta librería es que no se instala tan fácilmente como las demás, y tendremos que trastear un poco. Pero el tiempo que invertimos en la instalación, es tiempo que nos devolverá en oro con la facilidad de sus funciones.

En esta web explica como instalarlo para cada sistema operativo:
https://blog.quantinsti.com/install-ta-lib-python/

La librería TA-Lib esta organizada por las siguientes categorías:Overlap Studies
  • Momentum Indicators
  • Volume Indicators
  • Volatility Indicators
  • Price Transform
  • Cycle Indicators
  • Pattern Recognition
  • Statistic Functions
Overlap Studies

En esta categoría podemos encontrar las Bollinger Bands, EMA, MA y SMA por poner unos ejemplos.

SMA, o Simple Moving Average es el valor que se obtiene al realizar una media simple con los x valores últimos que queramos Todos los valores tienen el mismo peso en el cálculo.


En cambio, la EMA o Exponential Moving Average, los valores mas recientes, tienen mas peso a la hora de calcular la media.


Pues vamos a meternos ya con Python para obtener estas dos medias en nuestro Dataset.


Del [1] al [2] importamos librerías y cargamos nuestro Dataset de ADA.
[3] Utilizamos la función SMA() y EMA() que vienen en la librería TA-lib. Para ello decimos sobre que columna de nuestro dataset a de calcular junto al periodo que deseamos.


[4] Ahora podemos añadir a nuestro DataFrame las nuevas columnas calculadas. Ademas podemos ver los 25 primeros valores de la tabla, y comprobamos que, para el SMA y EMA de 7, no se obtiene ninguna media al no disponer de suficientes datos para ese periodo. Por lo que podemos confirmar el cálculo.

[5] Y ahora haciendo uso de Matplotlib imprimimos sobre el valor de cierre de ADA, la media simple de 7 y de 21. También podríamos hacerlo de igual forma para las EMAs.
Lo bueno que tiene Matplotlib, es que podemos dibujar varias curvas superpuestas y luego imprimirlas todas juntas como acabamos de ver.





Actualizaciones:

16/05/2021: Añadida la sección de "Librerías que nos harán la vida más fácil". En el indice añado la libreria request, pero no la tocaré hasta al menos haber visto la libreria de TA-Lib que es donde podemos decir que ya emnpieza la magia.

17/05/2021: Empezamos con la libreria TA-Lib. SMA y EMA.

Lo que no se entienda bien, o no este bien redactado dejarmelo por aqui e iré mejorandolo.
Shur, estoy haciendo un bot con técnicas de inteligencia artificial para automatizar el proceso, en unos meses puede que tengáis noticias por aquí...
← A Criptomonedas