File size: 1,953 Bytes
5913c8f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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)