Pular para o conteúdo principal

Exemplos Práticos

Implementações completas e casos de uso do NeuroChart.ai.

Exemplo 1: Bot de Trading Simples

Python

import neurochart
import time

class SimpleTrader:
def __init__(self, api_key):
self.client = neurochart.Client(api_key)
self.position = None

def analyze_market(self):
"""Analisa o mercado usando Chart GPT V3 TURBO"""
response = self.client.chat.complete({
'messages': [{
'role': 'user',
'content': 'Analise BTC/USDT para day trading. Devo comprar, vender ou aguardar?'
}]
})

return response.choices[0].message.content

def execute_trade(self):
analysis = self.analyze_market()

if 'comprar' in analysis.lower() and not self.position:
print(f"🟢 Sinal de COMPRA detectado")
self.position = {
'side': 'buy',
'price': self.get_current_price(),
'time': time.time()
}
elif 'vender' in analysis.lower() and self.position:
print(f"🔴 Sinal de VENDA detectado")
profit = self.calculate_profit()
print(f"💰 Lucro: {profit}%")
self.position = None

def get_current_price(self):
ticker = self.client.market.ticker('BTCUSDT')
return float(ticker['price'])

def calculate_profit(self):
current_price = self.get_current_price()
entry_price = self.position['price']
return ((current_price - entry_price) / entry_price) * 100

# Uso
trader = SimpleTrader('your_api_key')
while True:
trader.execute_trade()
time.sleep(300) # Aguarda 5 minutos

Exemplo 2: Dashboard React

Component de Análise em Tempo Real

import React, { useState, useEffect } from 'react';
import { NeuroChart } from '@neurochart/sdk';

function CryptoAnalyzer() {
const [analysis, setAnalysis] = useState(null);
const [loading, setLoading] = useState(false);
const [selectedCoin, setSelectedCoin] = useState('BTC');

const nc = new NeuroChart({
apiKey: process.env.REACT_APP_NEUROCHART_KEY
});

const analyzeMarket = async () => {
setLoading(true);
try {
const response = await nc.chat.complete({
messages: [{
role: 'user',
content: `Faça uma análise completa do ${selectedCoin} incluindo:
1. Tendência atual
2. Níveis importantes
3. Indicadores técnicos
4. Recomendação de trading`
}]
});

setAnalysis(response.choices[0].message.content);
} catch (error) {
console.error('Erro na análise:', error);
}
setLoading(false);
};

useEffect(() => {
analyzeMarket();
const interval = setInterval(analyzeMarket, 60000); // Atualiza a cada minuto
return () => clearInterval(interval);
}, [selectedCoin]);

return (
<div className="analyzer-container">
<div className="coin-selector">
{['BTC', 'ETH', 'BNB', 'SOL'].map(coin => (
<button
key={coin}
onClick={() => setSelectedCoin(coin)}
className={selectedCoin === coin ? 'active' : ''}
>
{coin}
</button>
))}
</div>

<div className="analysis-panel">
{loading ? (
<div className="loading">Analisando mercado...</div>
) : (
<div className="analysis-content">
<h2>Análise {selectedCoin}/USDT</h2>
<pre>{analysis}</pre>
</div>
)}
</div>

<button onClick={analyzeMarket} className="refresh-btn">
🔄 Atualizar Análise
</button>
</div>
);
}

export default CryptoAnalyzer;

Exemplo 3: Alertas Automáticos

Node.js + Express

const express = require('express');
const { NeuroChart } = require('@neurochart/sdk');

const app = express();
const nc = new NeuroChart({ apiKey: process.env.API_KEY });

// Configurar alertas
const alerts = [
{ coin: 'BTC', condition: 'RSI > 70', action: 'notify_overbought' },
{ coin: 'ETH', condition: 'MACD crossover', action: 'notify_buy_signal' }
];

// Verificar condições a cada 5 minutos
setInterval(async () => {
for (const alert of alerts) {
const analysis = await nc.analysis.technical({
symbol: `${alert.coin}USDT`,
indicators: ['RSI', 'MACD']
});

if (checkCondition(analysis, alert.condition)) {
sendNotification(alert);
}
}
}, 300000);

function checkCondition(analysis, condition) {
// Lógica para verificar condições
if (condition.includes('RSI > 70')) {
return analysis.rsi.value > 70;
}
// Adicionar mais condições...
}

function sendNotification(alert) {
console.log(`🚨 Alerta: ${alert.coin} - ${alert.condition}`);
// Implementar envio de email, SMS, etc.
}

app.listen(3000, () => {
console.log('Sistema de alertas rodando na porta 3000');
});

Exemplo 4: Análise de Sentimento

Script de Monitoramento

from neurochart import Client
import matplotlib.pyplot as plt
from datetime import datetime, timedelta

client = Client('your_api_key')

def analyze_sentiment(coin, days=7):
"""Analisa o sentimento do mercado para uma moeda"""

results = []

for i in range(days):
date = datetime.now() - timedelta(days=i)

response = client.chat.complete({
'messages': [{
'role': 'user',
'content': f'Qual o sentimento do mercado para {coin} em {date.strftime("%Y-%m-%d")}? Responda com: Muito Negativo, Negativo, Neutro, Positivo ou Muito Positivo.'
}]
})

sentiment = response.choices[0].message.content
results.append({
'date': date,
'sentiment': sentiment,
'score': sentiment_to_score(sentiment)
})

return results

def sentiment_to_score(sentiment):
mapping = {
'Muito Negativo': -2,
'Negativo': -1,
'Neutro': 0,
'Positivo': 1,
'Muito Positivo': 2
}
return mapping.get(sentiment, 0)

def plot_sentiment(data, coin):
dates = [d['date'] for d in data]
scores = [d['score'] for d in data]

plt.figure(figsize=(10, 6))
plt.plot(dates, scores, marker='o')
plt.axhline(y=0, color='gray', linestyle='--')
plt.title(f'Sentimento do Mercado - {coin}')
plt.xlabel('Data')
plt.ylabel('Sentimento')
plt.ylim(-2.5, 2.5)
plt.grid(True, alpha=0.3)
plt.show()

# Uso
btc_sentiment = analyze_sentiment('Bitcoin', days=14)
plot_sentiment(btc_sentiment, 'Bitcoin')

Exemplo 5: WebSocket em Tempo Real

Integração com Chart GPT

const WebSocket = require('ws');
const { NeuroChart } = require('@neurochart/sdk');

class RealTimeAnalyzer {
constructor(apiKey) {
this.nc = new NeuroChart({ apiKey });
this.ws = null;
this.analysisQueue = [];
}

connect() {
this.ws = new WebSocket('wss://stream.binance.com:9443/ws/btcusdt@trade');

this.ws.on('message', async (data) => {
const trade = JSON.parse(data);

// Acumula trades por 1 minuto
this.analysisQueue.push(trade);

if (this.analysisQueue.length >= 60) {
await this.analyzePattern();
this.analysisQueue = [];
}
});
}

async analyzePattern() {
const prices = this.analysisQueue.map(t => parseFloat(t.p));
const volumes = this.analysisQueue.map(t => parseFloat(t.q));

const avgPrice = prices.reduce((a, b) => a + b) / prices.length;
const totalVolume = volumes.reduce((a, b) => a + b);

const response = await this.nc.chat.complete({
messages: [{
role: 'user',
content: `Analise este padrão de trading:
- Preço médio: ${avgPrice}
- Volume total: ${totalVolume}
- Variação: ${Math.max(...prices) - Math.min(...prices)}

Isso indica acumulação, distribuição ou neutro?`
}]
});

console.log('📊 Análise:', response.choices[0].message.content);
}
}

// Iniciar análise
const analyzer = new RealTimeAnalyzer('your_api_key');
analyzer.connect();

Exemplo 6: Backtesting de Estratégias

Testando Estratégias com Dados Históricos

import neurochart
import pandas as pd
from datetime import datetime, timedelta

class StrategyBacktest:
def __init__(self, api_key):
self.client = neurochart.Client(api_key)
self.results = []

def test_strategy(self, symbol, start_date, end_date):
"""Testa uma estratégia baseada em IA"""
current_date = start_date
capital = 10000
position = None

while current_date <= end_date:
# Simula análise do Chart GPT
signal = self.get_ai_signal(symbol, current_date)
price = self.get_historical_price(symbol, current_date)

if signal == 'BUY' and not position:
position = {
'entry_price': price,
'entry_date': current_date,
'size': capital / price
}
elif signal == 'SELL' and position:
profit = (price - position['entry_price']) * position['size']
capital += profit

self.results.append({
'entry_date': position['entry_date'],
'exit_date': current_date,
'profit': profit,
'return': (profit / (position['entry_price'] * position['size'])) * 100
})
position = None

current_date += timedelta(days=1)

return self.calculate_metrics(capital)

def get_ai_signal(self, symbol, date):
"""Obtém sinal da IA para uma data específica"""
response = self.client.chat.complete({
'messages': [{
'role': 'user',
'content': f'Se você estivesse em {date.strftime("%Y-%m-%d")}, você compraria ou venderia {symbol}? Responda apenas BUY, SELL ou HOLD.'
}]
})
return response.choices[0].message.content.strip()

def calculate_metrics(self, final_capital):
"""Calcula métricas de performance"""
initial_capital = 10000
total_return = ((final_capital - initial_capital) / initial_capital) * 100

winning_trades = [r for r in self.results if r['profit'] > 0]
losing_trades = [r for r in self.results if r['profit'] < 0]

metrics = {
'total_return': total_return,
'final_capital': final_capital,
'total_trades': len(self.results),
'winning_trades': len(winning_trades),
'losing_trades': len(losing_trades),
'win_rate': len(winning_trades) / len(self.results) * 100 if self.results else 0,
'avg_win': sum(t['return'] for t in winning_trades) / len(winning_trades) if winning_trades else 0,
'avg_loss': sum(t['return'] for t in losing_trades) / len(losing_trades) if losing_trades else 0
}

return metrics

# Executar backtest
backtest = StrategyBacktest('your_api_key')
results = backtest.test_strategy(
'BTC',
datetime(2024, 1, 1),
datetime(2024, 3, 31)
)

print("📊 Resultados do Backtest:")
for key, value in results.items():
print(f"{key}: {value}")