79 lines
3.0 KiB
Markdown
79 lines
3.0 KiB
Markdown
# CryptoPorfolio
|
|
|
|
pequena aplicação para ir acompanhando a evolução de um portfolio de activos de criptomoedas
|
|
|
|
"historico_preco.csv" -> ficheiro CSV com dados historicos diarizados de um activo.
|
|
|
|
data,moeda,simbolo,preco_abertura,preco_maximo,preco_minimo,preco_fecho
|
|
|
|
<data> - data a que se referem os dados. formato: dd-mm-aaaa
|
|
<moeda> - nome do activo (ex: bitcoin)
|
|
<simbolo> - simbolo do activo (ex: btc)
|
|
<preco_abertura> - preco de abertura do activo para esse dia (em EUR)
|
|
<preco_maximo> - preco máximo atingido pelo activo nesse dia (em EUR)
|
|
<preco_minimo> - preco minimo atingido pelo activo nesse dia (em EUR)
|
|
<preco_fecho> - preco de fecho do activo nesse dia (em EUR)
|
|
|
|
"portfolio.csv" - ficheiro CSV com informação sobre os movimentos de um activo.
|
|
|
|
data,moeda,tipo_movimento,quantidade,preco_movimento
|
|
|
|
<data> - data a que se refere o movimento
|
|
<moeda> - activo a que se refre o movimento
|
|
<tipo_movimento> - tipo do movimento ("compra", "venda")
|
|
<quantidade> - quantidade do activo a que se refere o movimento
|
|
<preco_movimento> - preco a que foi efectuado o movimento (preco de compra * quantidade comprada)
|
|
|
|
exemplo:
|
|
02-03-2024,bitcoin,compra,0.05,2978.024
|
|
|
|
este exemplo indica-nos que no dia 02-03-2024 foi comprado 0.05BTC com um custo total de 2978.024EUR
|
|
|
|
de notar que o preco do movimento é o valor pago por 0.05BTC, não o preco de mercado de 1un de BTC nesta data.
|
|
|
|
podemos calcular qual o preco de compra por unidade de BTC deste movimento simplesmente:
|
|
<preco_movimento> / <quantidade> = 59560.48EUR
|
|
|
|
consultando na coingecko o preco de mercado de bitcoin à data de 02-03-2024 (cerca de 57560.483EUR), vemos que foi pago um premium de:
|
|
( ( 59560.48 / 57560.483 ) - 1 ) * 100 = 3.47%
|
|
|
|
## Documentação API
|
|
https://docs.coingecko.com/reference/introduction
|
|
|
|
API_KEY = "CG-K5RS5VXsdFDip2UvY3z8VjQP"
|
|
|
|
## Obter preço de fecho dos ultimos 365 dias
|
|
|
|
https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=eur&days=365&interval=daily
|
|
|
|
* 365 dias é o maximo que podemos obter com demo API_KEY da CoinGecko (as of May '24)
|
|
|
|
## Obter OHLC dos ultimos 2 dias
|
|
|
|
https://api.coingecko.com/api/v3/coins/bitcoin/ohlc?vs_currency=eur&days=365&precision=3
|
|
|
|
## Sidequest - criação de wrapper para a API Coingecko
|
|
|
|
sim sim, já existe uma (muito bem feita, por sinal!) que pode ser descarregada aqui: https://github.com/khooihzhz/coingecko-python
|
|
|
|
esta é a minha tentativa! :D
|
|
|
|
### endpoints Public API V3
|
|
- ping
|
|
- ✅ check api server status
|
|
- simple
|
|
- ✅⚠️ coin price by ids (só retorna dados para um ID)
|
|
- ✅⚠️ coin price by token addresses (só retorna dados para um contracto)
|
|
- ❌⬛ supported currencies list
|
|
- coins
|
|
- contract
|
|
- asset platforms
|
|
- categories
|
|
- exchanges
|
|
- derivatives
|
|
- NFTs (beta)
|
|
- exchange rates
|
|
- search
|
|
- trending
|
|
- global
|
|
- companies (beta) |