adicionadas novas chamadas API
This commit is contained in:
217
README.md
217
README.md
@ -2,27 +2,31 @@
|
||||
|
||||
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
|
||||
"historico_preco.csv" -> ficheiro CSV com dados historicos diarizados de um activo.
|
||||
|
||||
<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)
|
||||
~~~pseudo
|
||||
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 refere 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 activo * quantidade comprada)
|
||||
~~~pseudo
|
||||
data,moeda,tipo_movimento,quantidade,preco_movimento
|
||||
|
||||
<data> - data a que se refere o movimento
|
||||
<moeda> - activo a que se refere 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 activo * quantidade comprada)
|
||||
~~~
|
||||
|
||||
exemplo:
|
||||
02-03-2024,bitcoin,compra,0.05,2978.024
|
||||
@ -32,113 +36,154 @@ este exemplo indica-nos que no dia 02-03-2024 foi comprado 0.05BTC com um custo
|
||||
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
|
||||
|
||||
~~~pseudo
|
||||
<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%
|
||||
( ( 59560.48 / 57560.483 ) - 1 ) * 100 = 3.47%
|
||||
|
||||
## Documentação API
|
||||
https://docs.coingecko.com/reference/introduction
|
||||
<details>
|
||||
<summary>Documentação API</summary>
|
||||
|
||||
<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
|
||||
</details>
|
||||
|
||||
## 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
|
||||
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
|
||||
|
||||
### Padrões a adoptar
|
||||
|
||||
#### Nomes de funções e parâmetros das chamadas API
|
||||
|
||||
usar como nome das funções e dos parâmetros os mesmos nomes usados pela API da CoinGecko,por exemplo:
|
||||
|
||||
~~~pseudo
|
||||
documentation:
|
||||
'Coin Price by IDs'
|
||||
endpoint:
|
||||
/simple/price/
|
||||
parametros:
|
||||
ids (required)
|
||||
vs_currencies (required)
|
||||
include_market_cap
|
||||
include_24hr_vol
|
||||
include_24hr_change
|
||||
include_last_updated_at
|
||||
precision
|
||||
|
||||
função:
|
||||
coin_price_by_ids()
|
||||
parametros:
|
||||
ids
|
||||
vs_currencies
|
||||
include_market_cap
|
||||
include_24hr_vol
|
||||
include_24hr_change
|
||||
include_last_updated_at
|
||||
precision
|
||||
~~~
|
||||
|
||||
*Nota: na situação em que o nome do parâmetro for um termo reservado, renomear com nome apropriado e comentar essa alteração*
|
||||
|
||||
#### Parâmetros obrigatórios e vazios
|
||||
|
||||
nas chamadas de API com parametros obrigatorios, a função deve gerar erro quando o parametro não for passado como argumento ou o tipo de objecto for diferente do esperado
|
||||
|
||||
quando houver parametros 'vazios' passados como argumentos, estes não devem ser incluidos no URL de consulta. ( implementado na função API() )
|
||||
|
||||
### endpoints Public API V3
|
||||
- **ping**
|
||||
|
||||
> ✅ check api server status
|
||||
✅ - implementado
|
||||
|
||||
- **simple**
|
||||
> ✅ coin price by ids
|
||||
❌ - não implementado
|
||||
|
||||
> ✅ coin price by token addresses
|
||||
|
||||
> ✅ supported currencies list
|
||||
- **coins**
|
||||
> ✅ coins list (id map)
|
||||
* **ping**
|
||||
|
||||
> ❌⬛ coins list with market data
|
||||
* ✅ check api server status
|
||||
|
||||
> ❌⬛ coin data by id
|
||||
* **simple**
|
||||
* ✅ coin price by ids
|
||||
|
||||
> ❌⬛ coin tickers by id
|
||||
* ✅ coin price by token addresses
|
||||
|
||||
> ❌⬛ coin historical data by id
|
||||
|
||||
> ❌⬛ coin historical chart data by id
|
||||
* ✅ supported currencies list
|
||||
* **coins**
|
||||
* ✅ coins list (id map)
|
||||
|
||||
> ❌⬛ coin historical chart data within time range by id
|
||||
* ✅ coins list with market data
|
||||
|
||||
> ❌⬛ coin ohlc chart by id
|
||||
- **contract**
|
||||
> ❌⬛ coin data by token address
|
||||
* ✅ coin data by id
|
||||
|
||||
> ❌⬛ coin historical chart data by token address
|
||||
* ✅ coin tickers by id
|
||||
|
||||
> ❌⬛ coin historical chart data within time range by token address
|
||||
- **asset platforms**
|
||||
> ❌⬛ assets platforms list (id map)
|
||||
* ✅ coin historical data by id
|
||||
|
||||
- **categories**
|
||||
> ❌⬛ coins categories list (id map)
|
||||
|
||||
> ❌⬛ coins categories list with market data
|
||||
* ✅ coin historical chart data by id
|
||||
|
||||
- **exchanges**
|
||||
> ❌⬛ exchanges list with data
|
||||
|
||||
> ❌⬛ exchanges list (id map)
|
||||
* ❌⬛ coin historical chart data within time range by id
|
||||
|
||||
> ❌⬛ exchange data by id
|
||||
* ❌⬛ coin ohlc chart by id
|
||||
* **contract**
|
||||
* ❌⬛ coin data by token address
|
||||
|
||||
> ❌⬛ exchange tickers by id
|
||||
* ❌⬛ coin historical chart data by token address
|
||||
|
||||
> ❌⬛ exchange volume chart by id
|
||||
- **derivatives**
|
||||
> ❌⬛ derivatives tickers list
|
||||
* ❌⬛ coin historical chart data within time range by token address
|
||||
* **asset platforms**
|
||||
* ❌⬛ assets platforms list (id map)
|
||||
|
||||
> ❌⬛ derivatives exchange list with data
|
||||
* **categories**
|
||||
* ❌⬛ coins categories list (id map)
|
||||
|
||||
> ❌⬛ derivatives exchange data by id
|
||||
* ❌⬛ coins categories list with market data
|
||||
|
||||
> ❌⬛ derivatives exchanges list (id map)
|
||||
* **exchanges**
|
||||
* ❌⬛ exchanges list with data
|
||||
|
||||
- **NFTs (beta)**
|
||||
> ❌⬛ nfts list (id map)
|
||||
* ❌⬛ exchanges list (id map)
|
||||
|
||||
> ❌⬛ nfts collection data by id
|
||||
* ❌⬛ exchange data by id
|
||||
|
||||
> ❌⬛ nfts collection data by contract address
|
||||
* ❌⬛ exchange tickers by id
|
||||
|
||||
- **exchange rates**
|
||||
> ❌⬛ btc-to-currency exchange rates
|
||||
* ❌⬛ exchange volume chart by id
|
||||
* **derivatives**
|
||||
* ❌⬛ derivatives tickers list
|
||||
|
||||
- **search**
|
||||
> ❌⬛ search queries
|
||||
* ❌⬛ derivatives exchange list with data
|
||||
|
||||
- **trending**
|
||||
> ❌⬛ trending search list
|
||||
* ❌⬛ derivatives exchange data by id
|
||||
|
||||
- **global**
|
||||
> ❌⬛ crypto global market data
|
||||
* ❌⬛ derivatives exchanges list (id map)
|
||||
|
||||
> ❌⬛ global de-fi market data
|
||||
* **NFTs (beta)**
|
||||
* ❌⬛ nfts list (id map)
|
||||
|
||||
- **companies (beta)**
|
||||
> ❌⬛ public companies holdings
|
||||
* ❌⬛ nfts collection data by id
|
||||
|
||||
* ❌⬛ nfts collection data by contract address
|
||||
|
||||
* **exchange rates**
|
||||
* ❌⬛ btc-to-currency exchange rates
|
||||
|
||||
* **search**
|
||||
* ❌⬛ search queries
|
||||
|
||||
* **trending**
|
||||
* ❌⬛ trending search list
|
||||
|
||||
* **global**
|
||||
* ❌⬛ crypto global market data
|
||||
|
||||
* ❌⬛ global de-fi market data
|
||||
|
||||
* **companies (beta)**
|
||||
* ❌⬛ public companies holdings
|
||||
|
||||
Reference in New Issue
Block a user