Skip to main content

Calcula, salva e reporta seu saldo do Mercado Bitcoin

Este programa:

  • Busca saldo em BRL de todos os seus tokens no Mercado Bitcoin
  • Calcula saldo consolidado
  • Atualiza um CSV caso o saldo tenha mudado
  • Manda o saldo atual por e-mail ou Telegram junto com algumas estatísticas

É necessário Python 3, Pandas e nada mais para rodar este programa.

Para conseguir enviar e-mails, seu sistema (Linux, obviamente) de forma geral precisa estar configurado como cliente de mail. Eis um exemplo para configurar o postfix do Fedora.

Depois, eu uso o CSV junto com o investorzilla para acompanhar performance.

Como usar a API

import MercadoBitcoinBalance

# Suas credenciais obtidas em https://www.MercadoBitcoin.com.br/plataforma/chaves-api
MP_API_ID='06…05'
MP_API_SECRET='10…19'

mb=MercadoBitcoinBalance.MercadoBitcoinAPI(MP_API_ID,MP_API_SECRET)

balances=mb.get_BRL_balances()

Como usar na linha de comando

Instale:

pip install MercadoBitcoinBalance --user

Use:

balancemb \
    --mb-id 06…05 \
    --mb-secret 10…19 \
    --csv-threshold 1 \
    --csv balances.txt \
    --csv-fund-name 'Nome arbitrário do fundo' \
    --report-threshold 20 \
    --mail seu_email@mail.net \
    --telegram-chat-id 12345678 \
    --telegram-bot-id '13…Wk'

Sendo:

  • mb-id e mb-secret: suas credenciais obtidas em https://www.MercadoBitcoin.com.br/plataforma/chaves-api
  • csv-threshold: só atualiza CSV se variação do saldo é maior do que este valor
  • csv: nome do arquivo CSV para registrar o saldo
  • csv-fund-name: um nome qualquer para etiquetar o saldo no CSV
  • report-threshold: só manda relatório se variação do saldo, desde último relatório, é maior do que este valor
  • mail: endereço para enviar pequeno relatório por e-mail; não manda se omitido
  • telegram-chat-id: o ID do seu usuário Telegram; não manda se omitido
  • telegram-bot-id: o ID do bot que você deve criar em https://t.me/BotFather

O CSV acumula os valores como uma série temoral. Registra a hora UTC (UTC, sempre UTC, sempre), o nome do fundo (passado em csv-fund-name) e o saldo consolidado em BRL. Assim:

time|fund|BRL|reported
2023-05-31T19:30:47.407006+00:00|Nome arbitrário do fundo|36595.57|1
2023-05-31T20:50:14.708121+00:00|Nome arbitrário do fundo|36576.22|0

O e-mail e mensagem de Telegram enviados tem esta cara:

Current balance: 36,576.22 BRL.

Previous balance: 34,595.72 BRL.

Variation: 1,980.50 BRL.

Percent change: 5.72%.

Historycal growth: 4% in 0m2d.

Brakedown by tokens and coins:

Total (BRL)
brl 36,229.86 BRL
abfy 336.42 BRL
psgft 9.40 BRL
wemix 0.54 BRL

Eu rodo isso a cada meia hora via crontab, assim:

*/30 * * * * ~/.local/bin/balancemb --mb-id 06…05 --mb-secret 10…19 --csv-threshold 2 --csv ~/investorzilla-my/mercadobitcoin-balances.txt --csv-fund-name 'Nome arbitrário do fundo' --report-threshold 20 --telegram-chat-id 12345678 --telegram-bot-id '11223344::A…k'

Adicionalmente, rodo todos os dias às 20:15 e forço envio de relatório (--report-threshold -1) por Telegram:

15 20 * * * ~/.local/bin/balancemb --mb-id 06…05 --mb-secret 10…19 --csv-threshold 5 --csv ~/investorzilla-my/mercadobitcoin-balances.txt --csv-fund-name 'Nome arbitrário do fundo' --report-threshold -1 --telegram-chat-id 12345678 --telegram-bot-id '11223344::A…k'

Ou seja, atualizo saldo consolidado em balances.txt a cada meia hora, não mando relatório mas mando saldos por Telegram caso houver variação de mais de 20 BRL. Além do mais, todo dia às 20:15 manda o saldo atual, mesmo que não houve variação.

Metadata

Release files for MercadoBitcoinBalance 1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for MercadoBitcoinBalance 1.5
File Size Uploaded
mercadobitcoinbalance-1.5.tar.gz 46.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for MercadoBitcoinBalance 1.5
File Interpreter ABI Platform
mercadobitcoinbalance-1.5-py3-none-any.whl Python 3 none any Details

Total release size: 80.4 kB

Release files / mercadobitcoinbalance-1.5.tar.gz

Download URL mercadobitcoinbalance-1.5.tar.gz
Size 46.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3315195be1279ccb615562d1b8534dd5abab6b07401834f9c3bcd36362ea9f20
BLAKE2b-256 checksum
How to use checksums
e80cf63b08ef90df38047edbb1cdb09b30466c16316da69687b283d13e51b637
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.9

Release files / mercadobitcoinbalance-1.5-py3-none-any.whl

Download URL mercadobitcoinbalance-1.5-py3-none-any.whl
Size 33.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6df5ecf0c9a860e9abbe591a71f75585e4b01bae9e34396ea63f4c728e49d3c9
BLAKE2b-256 checksum
How to use checksums
d67a96fbc9585cf4039a726835926ddacb0df82e3ced23f4f62355c788a5e4f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.9

Release history Release notifications | RSS feed

This release

1.5 This release

2 release files

1.4

2 release files

1.3

2 release files

1.2

2 release files

1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page