pattern-analysis / api-2.py
tmmdev's picture
Initial commit with clean codebase
5913c8f
raw
history blame
1.95 kB
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
import uvicorn
import requests
import pandas as pd
import numpy as np
from pattern_analyzer import PatternAnalyzer
from indicator_analyzer import IndicatorAnalyzer
from chart_maker import ChartMaker
from test_data import test_data
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.get("/analyze/{symbol}")
async def analyze_patterns(symbol: str, timeframe: str = "1D"):
try:
# Fetch OHLCV data
candle_response = requests.get(f"http://localhost:5000/fetch_candles?symbol={symbol}&timeframe={timeframe}")
ohlcv_data = candle_response.json()
# Create DataFrame with correct column structure
df = pd.DataFrame(ohlcv_data)
df = df.rename(columns={'time': 'timestamp'})
# Initialize analyzers
pattern_analyzer = PatternAnalyzer()
indicator_analyzer = IndicatorAnalyzer()
chart_maker = ChartMaker()
# Get analysis results
patterns = pattern_analyzer.analyze_data(df)
indicators = indicator_analyzer.analyze_indicators(df)
pattern_charts = chart_maker.create_pattern_chart(df, patterns)
return {
"patterns": patterns,
"indicators": indicators,
"charts": pattern_charts,
"ohlcv_data": ohlcv_data
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.get("/")
async def root():
return {
"status": "online",
"service": "Pattern Analysis API",
"endpoints": {
"analyze": "/analyze/{symbol}",
"docs": "/docs",
"health": "/health"
}
}
if __name__ == "__main__":
uvicorn.run(app, host="127.0.0.1", port=8000)