Este projeto implementa um modelo de previsão do preço do Bitcoin usando aprendizado profundo (LSTM) e múltiplos indicadores do mercado, incluindo dados on-chain, sentimento de mercado, e indicadores técnicos.
- Requisitos
- Configuração do Ambiente
- Obtendo as APIs
- Estrutura do Projeto
- Descrição das Classes e Funções
- Como Executar
- Documentação das APIs
- Python 3.8+
- pip (gerenciador de pacotes Python)
- Conta na Binance
- Chave API da AlphaVantage
- Clone o repositório (se aplicável) ou crie um novo diretório para o projeto:
mkdir bitcoin-predictor
cd bitcoin-predictor
- (Opcional) Crie um ambiente virtual:
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
- Instale as dependências:
pip install pandas numpy scikit-learn tensorflow requests-cache cryptocmd python-binance pytrends bs4 textblob alpha_vantage python-dotenv ta
-
Binance API:
- Acesse https://www.binance.com/en/my/settings/api-management
- Faça login em sua conta
- Clique em "Create API"
- Anote a API Key e Secret Key
-
AlphaVantage:
- Acesse https://www.alphavantage.co/support/#api-key
- Registre-se para obter uma chave gratuita
- Anote a chave API
-
Configure o arquivo
.env
:- Crie um arquivo
.env
na raiz do projeto - Adicione as seguintes linhas:
BINANCE_API_KEY=sua_chave_aqui BINANCE_API_SECRET=seu_secret_aqui ALPHA_VANTAGE_KEY=sua_chave_aqui
- Crie um arquivo
bitcoin-predictor/
│
├── .env # Arquivo com chaves de API
├── predictor.py # Código principal
└── README.md # Este arquivo
Classe responsável pela coleta de dados de várias fontes.
Métodos:
-
get_price_data(start_date='2012-01-01')
:- Retorna: DataFrame com preços históricos do Bitcoin (Open, High, Low, Close, Volume)
- Parâmetros: start_date (str) - Data inicial para coleta
-
get_google_trends()
:- Retorna: DataFrame com volume de buscas do Google Trends para "bitcoin"
- Sem parâmetros
-
get_onchain_data()
:- Retorna: DataFrame com métricas on-chain (transações, hashrate, mempool, dificuldade)
- Sem parâmetros
-
get_fear_greed_index()
:- Retorna: DataFrame com índice de Medo e Ganância
- Sem parâmetros
-
get_exchange_flow()
:- Retorna: DataFrame com dados de fluxo da Binance
- Sem parâmetros
Classe para processamento e engenharia de features.
Métodos:
-
create_technical_indicators(df)
:- Retorna: DataFrame com indicadores técnicos adicionados
- Parâmetros: df (DataFrame) - Dados de preço
-
prepare_features(price_data, google_trends, onchain_data, fear_greed, exchange_flow)
:- Retorna: DataFrame combinado e normalizado com todas as features
- Parâmetros: Vários DataFrames com diferentes tipos de dados
Classe que implementa o modelo de previsão LSTM.
Métodos:
-
create_sequences(data)
:- Retorna: Arrays numpy (X, y) com sequências para treino
- Parâmetros: data (DataFrame) - Dados processados
-
build_model(input_shape)
:- Retorna: Modelo Keras compilado
- Parâmetros: input_shape (tuple) - Forma dos dados de entrada
-
train(X, y, epochs=50, batch_size=32)
:- Retorna: (history, X_test, y_test) - Histórico de treino e dados de teste
- Parâmetros:
- X (array): Features de treino
- y (array): Labels de treino
- epochs (int): Número de épocas
- batch_size (int): Tamanho do batch
-
predict(X)
:- Retorna: Array com previsões
- Parâmetros: X (array) - Dados para previsão
-
Certifique-se que todas as dependências estão instaladas e o arquivo
.env
está configurado -
Execute o script principal:
python predictor.py
- Para usar em seu próprio código:
from predictor import BitcoinDataCollector, FeatureEngineer, BitcoinPredictor
# Inicializa classes
collector = BitcoinDataCollector()
engineer = FeatureEngineer()
predictor = BitcoinPredictor()
# Coleta e processa dados
price_data = collector.get_price_data()
# ... coleta outros dados ...
# Prepara features
processed_data = engineer.prepare_features(
price_data,
google_trends,
onchain_data,
fear_greed,
exchange_flow
)
# Treina modelo
X, y = predictor.create_sequences(processed_data)
history, X_test, y_test = predictor.train(X, y)
# Faz previsões
predictions = predictor.predict(X_test)