{"id":23388276,"url":"https://github.com/esscova/stock_screen","last_synced_at":"2026-04-28T08:05:48.659Z","repository":{"id":269096316,"uuid":"905868422","full_name":"esscova/stock_screen","owner":"esscova","description":"Acompanhe cotações de seus ativos financeiros!","archived":false,"fork":false,"pushed_at":"2024-12-20T21:34:39.000Z","size":141,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-14T09:40:24.046Z","etag":null,"topics":["dashboard","plotly","python","streamlit","yfinance"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/esscova.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-19T17:23:17.000Z","updated_at":"2024-12-20T21:34:43.000Z","dependencies_parsed_at":"2024-12-20T22:23:22.681Z","dependency_job_id":"9e4656f9-7f8e-44fc-8eee-aa8caa388131","html_url":"https://github.com/esscova/stock_screen","commit_stats":null,"previous_names":["esscova/stock_screen"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esscova%2Fstock_screen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esscova%2Fstock_screen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esscova%2Fstock_screen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esscova%2Fstock_screen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/esscova","download_url":"https://codeload.github.com/esscova/stock_screen/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247847776,"owners_count":21006129,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dashboard","plotly","python","streamlit","yfinance"],"created_at":"2024-12-22T02:18:30.302Z","updated_at":"2026-04-28T08:05:43.611Z","avatar_url":"https://github.com/esscova.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Stocks Dashboard\n\n![image.png](image.png)\n\n## **Descrição**\n\nEste projeto implementa uma dashboard interativa para visualização de gráficos de preços de ações utilizando **Streamlit**, **Plotly** e **Yahoo Finance**. Ele permite que os usuários consultem informações financeiras e visualizem gráficos de preços históricos de ações em tempo real, com a possibilidade de adicionar indicadores como **Médias Móveis Simples (SMA)** e **Médias Móveis Exponenciais (EMA)**.\n\n## **Arquitetura do Projeto**\n\nO projeto é composto pelos seguintes arquivos principais:\n\n- **app.py**: O arquivo principal onde a interface da dashboard é criada utilizando o Streamlit. Este arquivo lida com a interação do usuário, coleta de dados e visualização dos gráficos.\n- **data_utils.py**: Contém a classe `DataUtils`, que é responsável por coletar os dados das cotações de ações usando a API do **Yahoo Finance**.\n- **indicadores.py**: Define a função `add_indicadores`, que adiciona indicadores financeiros (como SMA e EMA) ao DataFrame de dados.\n- **Dockerfile**: Arquivo de configuração para criar uma imagem Docker que facilita a implementação do projeto em qualquer ambiente.\n\n---\n\n## **Requisitos**\n\n### **Bibliotecas Necessárias**\n\nAs dependências do projeto são gerenciadas pelo arquivo `requirements.txt`. As bibliotecas principais incluem:\n\n- **streamlit**: Para criar a interface interativa da dashboard.\n- **plotly**: Para criar gráficos dinâmicos e interativos.\n- **yfinance**: Para acessar dados financeiros de ações.\n- **loguru**: Para gerenciar logs de execução.\n\nPara instalar as dependências, execute:\n\n```bash\npip install -r requirements.txt\n```\n\n---\n\n## **Configuração e Execução**\n\n### **1. Rodando o projeto localmente**\n\nPara executar o projeto em sua máquina local, siga os passos abaixo:\n\n1. **Clone o repositório**:\n   ```bash\n   git clone https://github.com/esscova/stock_screen.git\n   cd stock_screen\n   ```\n\n2. **Instale as dependências**:\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n3. **Execute o Streamlit**:\n   No diretório do projeto, execute:\n   ```bash\n   streamlit run app.py\n   ```\n\n4. **Acesse a dashboard**:\n   Após o comando acima, o Streamlit abrirá automaticamente a dashboard no seu navegador. Caso contrário, você pode acessá-la manualmente em `http://localhost:8501`.\n\n### **2. Utilizando o Docker**\n\nSe preferir rodar o projeto em um container Docker, você pode usar o seguinte comando:\n\n1. **Crie a imagem Docker**:\n   ```bash\n   docker build -t stock_screen .\n   ```\n\n2. **Execute o container Docker**:\n   ```bash\n   docker run -p 8501:8501 stock_screen\n   ```\n\n3. **Acesse a dashboard**:\n   Abra o navegador e vá para `http://localhost:8501`.\n\n---\n\n## **Como Usar a Dashboard**\n\n### **1. Filtros**\n\nNa barra lateral esquerda, você encontrará as opções para personalizar sua visualização de dados:\n\n- **Ticker**: Insira o código da ação que deseja visualizar (ex: `AAPL` para Apple, `MSFT` para Microsoft).\n    - Para Empresas do Brasil é necessário terminar o ticker com `.SA`. Exemplo: `PETR4.SA`.\n- **Período**: Selecione o intervalo de tempo para o gráfico. As opções incluem:\n  - `1m`, `2m`, `5m`, `15m`, `30m`, `60m`: Intervalos de minutos.\n  - `1d`, `5d`, `1wk`, `1mo`, `3mo`: Intervalos de dias, semanas e meses.\n- **Tipo de Gráfico**: Escolha entre \"Line\" (gráfico de linha) ou \"Candlestick\" (gráfico de velas).\n- **Médias Móveis**: Selecione os indicadores de médias móveis que deseja adicionar ao gráfico:\n  - **SMA 20** (Média Móvel Simples de 20 períodos)\n  - **EMA 20** (Média Móvel Exponencial de 20 períodos)\n- **UPDATE**: Clique no botão \"UPDATE\" para aplicar os filtros e atualizar a visualização.\n\n### **2. Visualização de Dados**\n\nNa área principal, você verá duas seções principais:\n\n- **Gráfico de Preços**: Exibe um gráfico interativo do preço da ação selecionada, com a possibilidade de visualizar os indicadores técnicos selecionados.\n  - **Gráfico de Linha**: Exibe a variação do preço de fechamento ao longo do tempo.\n  - **Gráfico de Candlestick**: Exibe os preços de abertura, fechamento, máxima e mínima para cada período.\n  \n- **Informações da Ação**: Exibe informações adicionais sobre a ação, como:\n  - Nome da empresa\n  - Setor e segmento\n  - Dividend Yield\n  - Último dividendo pago\n\nSe ocorrer algum erro, uma mensagem de erro será exibida, indicando que os dados não puderam ser carregados.\n\n---\n\n## **Estrutura de Arquivos**\n\n### **app.py**\n\nEste arquivo é o principal ponto de entrada para o Streamlit. Ele configura a interface, os filtros e a lógica de exibição do gráfico. Abaixo está um resumo das principais seções:\n\n- **Configuração da interface**: O Streamlit é configurado com a opção de layout \"wide\" e o título da página é configurado como `Stocks Dashboard`.\n- **Menu lateral**: Aqui, os filtros são configurados para coletar os inputs do usuário, como o ticker da ação, o intervalo de tempo e os tipos de gráficos.\n- **Exibição de gráficos**: Dependendo dos filtros aplicados, a função de visualização usa o Plotly para criar o gráfico de linha ou candlestick, incluindo indicadores técnicos se selecionados.\n  \n### **data_utils.py**\n\nContém a classe `DataUtils`, que é responsável por interagir com a API **Yahoo Finance** para buscar os dados históricos de cotações. A função `fetch_cotacoes` obtém os preços das ações com base no ticker e no intervalo, enquanto `fetch_data` traz informações adicionais sobre a ação.\n\n### **indicadores.py**\n\nDefine a função `add_indicadores`, que calcula e adiciona as médias móveis (SMA e EMA) ao DataFrame de preços da ação.\n\n### **Dockerfile**\n\nConfigura o ambiente Docker para garantir que o projeto possa ser executado em qualquer máquina com Docker instalado. Ele instala as dependências, copia os arquivos e define o comando para rodar o Streamlit.\n\n---\n\n## **Logs**\n\nO projeto utiliza a biblioteca **loguru** para registrar logs de execução. Estes logs são salvos em arquivos de log, localizados na pasta `logs/`:\n- **main.log**: Logs principais da execução da dashboard.\n- **data_utils.log**: Logs relacionados à coleta de dados financeiros.\n- **indicadores.log**: Logs relacionados à adição de indicadores técnicos.\n\n---\n\n## **Contribuições**\n\nSinta-se à vontade para contribuir com melhorias ou relatar bugs. As contribuições podem ser feitas através de **pull requests** no GitHub.\n\n- **GitHub**: [https://github.com/esscova](https://github.com/esscova)\n- **LinkedIn**: [Wellington Moreira Santos](https://www.linkedin.com/in/wellington-moreira-santos/)\n\n---\n\n**Licença**: Este projeto está licenciado sob a Licença MIT - consulte o arquivo [LICENSE](LICENSE) para mais detalhes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesscova%2Fstock_screen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fesscova%2Fstock_screen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesscova%2Fstock_screen/lists"}