Skip to content

SafeMantella/btc_preditor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

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

Watchers

Forks

Languages