Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Preditor de Preço do Bitcoin com Múltiplos Indicadores

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.

Sumário

Requisitos

  • Python 3.8+
  • pip (gerenciador de pacotes Python)
  • Conta na Binance
  • Chave API da AlphaVantage

Configuração do Ambiente

  1. Clone o repositório (se aplicável) ou crie um novo diretório para o projeto:
mkdir bitcoin-predictor
cd bitcoin-predictor
  1. (Opcional) Crie um ambiente virtual:
python -m venv venv
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate     # Windows
  1. Instale as dependências:
pip install pandas numpy scikit-learn tensorflow requests-cache cryptocmd python-binance pytrends bs4 textblob alpha_vantage python-dotenv ta

Obtendo as APIs

  1. Binance API:

  2. AlphaVantage:

  3. 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
    

Estrutura do Projeto

bitcoin-predictor/
│
├── .env                  # Arquivo com chaves de API
├── predictor.py          # Código principal
└── README.md            # Este arquivo

Descrição das Classes e Funções

BitcoinDataCollector

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

FeatureEngineer

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

BitcoinPredictor

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

Como Executar

  1. Certifique-se que todas as dependências estão instaladas e o arquivo .env está configurado

  2. Execute o script principal:

python predictor.py
  1. 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)

Documentação das APIs

About

A test predictor for bitcoin and other cryptos. (Work In Progress)

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages