From 2639cc22f10970fe616a7c4bf9e9ad29a1c90dd5 Mon Sep 17 00:00:00 2001 From: Luis Rodrigues Date: Tue, 16 Jul 2024 20:21:03 +0100 Subject: [PATCH] =?UTF-8?q?pequenas=20corre=C3=A7=C3=B5es=20para=20facilit?= =?UTF-8?q?ar=20leitura=20de=20c=C3=B3digo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crypto_portfolio.py | 2 +- dados/bitcoin.csv | 86 +++++++++++++++++++++++++++++++++++++++++++++ portfolio.py | 17 ++++++--- 3 files changed, 100 insertions(+), 5 deletions(-) diff --git a/crypto_portfolio.py b/crypto_portfolio.py index 31b48f7..f0d3a2e 100644 --- a/crypto_portfolio.py +++ b/crypto_portfolio.py @@ -4,7 +4,7 @@ import os # se não houver ficheiro 'modulos/constantes.py' criar ficheiro com 'CHAVE_API_DEMO' if not os.path.exists('modulos/constantes.py'): with open('modulos/constantes.py', 'w') as f: - chave_api = input('Introduza a chave da API: ') + chave_api = input('Introduza a chave da API Demo de CoinGecko: ') f.write(f'CHAVE_API_DEMO = \'{chave_api}\'\n') import modulos.coingecko_api as cgapi diff --git a/dados/bitcoin.csv b/dados/bitcoin.csv index e68cc91..c6e33da 100644 --- a/dados/bitcoin.csv +++ b/dados/bitcoin.csv @@ -422,3 +422,89 @@ data_unix,criptomoeda,vs_currency,preco_abertura,preco_maximo,preco_minimo,preco 1719878400000,bitcoin,eur,58750.58,58979.26,58468.483,58509.44 1719892800000,bitcoin,eur,58555.86,58878.003,58430.603,58753.347 1719907200000,bitcoin,eur,58765.44,58835.478,58297.943,58367.328 +1719921600000,bitcoin,eur,58402.504,58530.756,58176.568,58459.994 +1719936000000,bitcoin,eur,58507.085,58689.578,57582.952,57753.791 +1719950400000,bitcoin,eur,57606.379,57991.676,57555.647,57562.142 +1719964800000,bitcoin,eur,57620.128,57782.214,57506.528,57718.074 +1719979200000,bitcoin,eur,57738.888,57863.36,56438.573,56668.851 +1719993600000,bitcoin,eur,56671.819,56889.442,56494.431,56494.431 +1720008000000,bitcoin,eur,56508.96,56595.498,55491.17,55998.124 +1720022400000,bitcoin,eur,56022.727,56089.718,55507.238,55673.327 +1720036800000,bitcoin,eur,55669.537,56111.042,55378.757,55378.757 +1720051200000,bitcoin,eur,55293.491,55876.002,55103.693,55833.806 +1720065600000,bitcoin,eur,55750.37,55977.388,53871.546,54710.309 +1720080000000,bitcoin,eur,54723.51,54738.735,53819.981,53819.981 +1720094400000,bitcoin,eur,53856.91,54105.559,52832.12,53529.545 +1720108800000,bitcoin,eur,53445.865,53873.051,52623.736,53873.051 +1720123200000,bitcoin,eur,53687.789,54191.111,53409.492,53931.641 +1720137600000,bitcoin,eur,53879.276,54270.371,52554.419,52904.904 +1720152000000,bitcoin,eur,52804.109,53150.478,51016.926,51016.926 +1720166400000,bitcoin,eur,51010.796,51122.793,49799.501,50250.591 +1720180800000,bitcoin,eur,50146.793,51412.315,49778.362,51166.546 +1720195200000,bitcoin,eur,51301.663,52247.42,50755.204,52186.48 +1720209600000,bitcoin,eur,52437.709,52476.751,51589.538,52127.588 +1720224000000,bitcoin,eur,52051.407,52396.272,51956.06,52307.685 +1720238400000,bitcoin,eur,52205.838,52648.666,51836.466,52031.971 +1720252800000,bitcoin,eur,51989.491,52258.126,51707.744,52158.087 +1720267200000,bitcoin,eur,52190.401,52457.756,52036.686,52352.422 +1720281600000,bitcoin,eur,52348.496,52916.213,52163.258,52880.604 +1720296000000,bitcoin,eur,52918.96,53533.55,52758.015,53439.196 +1720310400000,bitcoin,eur,53380.175,53899.922,53380.175,53715.7 +1720324800000,bitcoin,eur,53813.398,53842.857,53406.258,53491.605 +1720339200000,bitcoin,eur,53459.14,53467.266,52637.695,52932.44 +1720353600000,bitcoin,eur,52917.237,53425.442,52917.237,52949.306 +1720368000000,bitcoin,eur,53022.751,53135.882,52274.562,52366.882 +1720382400000,bitcoin,eur,52402.096,52935.06,52402.096,52850.791 +1720396800000,bitcoin,eur,52848.576,53039.229,51548.42,51613.909 +1720411200000,bitcoin,eur,51565.6,51730.373,50175.924,50900.108 +1720425600000,bitcoin,eur,50947.2,51552.877,50741.182,51533.926 +1720440000000,bitcoin,eur,51563.535,53391.789,51563.535,52797.185 +1720454400000,bitcoin,eur,52697.839,52949.173,50871.031,51502.953 +1720468800000,bitcoin,eur,51361.811,52224.739,51353.364,52214.646 +1720483200000,bitcoin,eur,52189.464,52563.057,51910.644,52316.601 +1720497600000,bitcoin,eur,52356.378,52871.245,52020.364,52871.245 +1720512000000,bitcoin,eur,52757.35,53251.055,52737.068,52813.883 +1720526400000,bitcoin,eur,52713.904,53443.452,52713.904,53101.455 +1720540800000,bitcoin,eur,53080.26,53414.86,52700.699,53127.28 +1720555200000,bitcoin,eur,53178.282,53689.194,53115.642,53402.411 +1720569600000,bitcoin,eur,53525.063,53780.36,53373.924,53621.436 +1720584000000,bitcoin,eur,53655.072,53717.147,53093.673,53714.199 +1720598400000,bitcoin,eur,53812.469,54824.144,53812.469,54473.443 +1720612800000,bitcoin,eur,54520.454,54520.454,53968.429,54063.423 +1720627200000,bitcoin,eur,54015.922,54100.605,53097.898,53461.641 +1720641600000,bitcoin,eur,53371.501,53551.429,53001.208,53082.327 +1720656000000,bitcoin,eur,53029.683,53418.739,52769.173,53272.289 +1720670400000,bitcoin,eur,53205.724,53858.285,52709.643,53046.847 +1720684800000,bitcoin,eur,53133.46,53742.061,53063.412,53660.239 +1720699200000,bitcoin,eur,53724.558,54262.65,53526.169,54262.65 +1720713600000,bitcoin,eur,54138.466,54483.976,52751.185,52751.185 +1720728000000,bitcoin,eur,52640.489,53363.48,52640.489,52933.395 +1720742400000,bitcoin,eur,52802.314,52973.262,52638.525,52781.068 +1720756800000,bitcoin,eur,52735.294,52971.953,52080.523,52360.371 +1720771200000,bitcoin,eur,52383.605,52831.222,52158.249,52432.185 +1720785600000,bitcoin,eur,52515.138,52656.976,52220.697,52405.867 +1720800000000,bitcoin,eur,52533.262,53474.497,52533.262,53379.005 +1720814400000,bitcoin,eur,53443.302,53678.654,52900.538,52915.354 +1720828800000,bitcoin,eur,52927.77,53024.863,52472.314,53014.036 +1720843200000,bitcoin,eur,53016.892,53079.183,52926.247,52954.68 +1720857600000,bitcoin,eur,52925.613,53283.41,52918.812,53197.49 +1720872000000,bitcoin,eur,53279.559,53785.293,53075.196,53615.024 +1720886400000,bitcoin,eur,53579.201,53988.858,53493.938,53896.457 +1720900800000,bitcoin,eur,53893.039,53986.048,53642.936,53682.852 +1720915200000,bitcoin,eur,53713.404,54755.698,53420.603,54166.677 +1720929600000,bitcoin,eur,54250.179,54808.342,54245.084,54411.706 +1720944000000,bitcoin,eur,54473.857,55260.443,54473.857,55066.192 +1720958400000,bitcoin,eur,55031.659,55284.276,54888.656,55028.264 +1720972800000,bitcoin,eur,55051.502,55094.039,54587.845,54940.769 +1720987200000,bitcoin,eur,55089.984,55122.236,54869.749,55076.265 +1721001600000,bitcoin,eur,55071.559,56502.826,55037.168,55984.243 +1721016000000,bitcoin,eur,55732.426,57620.253,55732.426,57577.507 +1721030400000,bitcoin,eur,57512.124,57870.234,57373.535,57748.221 +1721044800000,bitcoin,eur,57733.582,57860.107,57128.562,57255.351 +1721059200000,bitcoin,eur,57280.071,57943.112,57280.071,57708.595 +1721073600000,bitcoin,eur,57803.006,58573.491,57739.157,58122.174 +1721088000000,bitcoin,eur,58194.438,59500.955,58108.227,59500.955 +1721102400000,bitcoin,eur,59490.545,59618.337,59241.658,59493.199 +1721116800000,bitcoin,eur,59463.668,59712.852,57654.563,57654.563 +1721131200000,bitcoin,eur,57729.996,58593.039,57442.529,58441.367 +1721145600000,bitcoin,eur,58517.942,59731.204,58054.525,59731.204 diff --git a/portfolio.py b/portfolio.py index 03e5538..45ff970 100644 --- a/portfolio.py +++ b/portfolio.py @@ -1,4 +1,6 @@ -# script para criar um historico de preços de criptomoedas, guardado em ficheiro CSV, com intuito de utilizar este historico de precos para acompanhar evolução de portfolio de criptomoedas +# script para criar um historico de preços de criptomoedas, guardado em ficheiro +# CSV, com intuito de utilizar este historico de precos para acompanhar evolução +# de portfolio de criptomoedas # aceder ao historico de preços OHLC de CoinGecko através da API # máximo de requests mensal: 10000 (320/dia; 13/hora) @@ -29,7 +31,8 @@ headers = { resposta = requests.get(url, headers= headers) -# carregar dados já existentes em ficheiro CSV (criar ficheiro se não existir) para dicionario +# carregar dados já existentes em ficheiro CSV para dicionario +# (criar ficheiro se não existir) import csv import os cabecalho: list = [ @@ -66,7 +69,9 @@ for linha_resposta in resposta.json(): nova_entrada[cabecalho[6]] = str(linha_resposta[4]) lista_linhas_resposta.append(nova_entrada) -# adicionar items de lista_linhas_resposta se não existirem em lista_linhas_ficheiro_csv (aka: adicionar apenas items novos a lista_linhas_ficheiro_csv) +# adicionar items de lista_linhas_resposta se não existirem em +# lista_linhas_ficheiro_csv +# (aka: adicionar apenas items novos a lista_linhas_ficheiro_csv) for item_resposta in lista_linhas_resposta: item_existe: bool = False for linha_ficheiro_csv in lista_linhas_ficheiro_csv: @@ -76,7 +81,11 @@ for item_resposta in lista_linhas_resposta: lista_linhas_ficheiro_csv.append(item_resposta) # gravar dados importados -def gravar_dados_ficheiro_csv(nome_ficheiro: str, dados_importados: list, campos: list = cabecalho): +def gravar_dados_ficheiro_csv( + nome_ficheiro: str, + dados_importados: list, + campos: list = cabecalho +) -> None: # validacao de parametros da funcao if not isinstance(nome_ficheiro, str): raise ValueError('\'nome_ficheiro\' não é do tipo \'str\'')